zoukankan      html  css  js  c++  java
  • SpringBoot常用注解

    title: SpringBoot常用注解
    date: 2017-07-21 14:17:44
    tags: Java

    简介

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,特点在于:

    1. 创建独立的Spring应用程序
    2. 嵌入的Tomcat,无需部署WAR文件
    3. 简化Maven配置
    4. 自动配置Spring
    5. 提供生产就绪型功能,如指标,健康检查和外部配置
    6. 绝对没有代码生成和对XML没有要求配置

    常用注解

    @SpringBootApplication 它包括了一下三个注解@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。

    一般用于启动的配置:

    @SpringBootApplication
    public class MainApplication{
      public static void main (String args[]){
        SpringApplication.run(Application.class,args);
      }
    }
    

    其中分别解释上面三个注解:

    @Configuration和他的好基友@Bean组成了Spring的一个配置类。

    <beans>  
        <bean id = "car" class="com.test.Car">  
            <property name="wheel" ref = "wheel"></property>  
        </bean>  
        <bean id = "wheel" class="com.test.Wheel"></bean>  
    </beans>  
    

    可以写成

    @Configuration  
    public class Conf {  
        @Bean  
        public Car car() {  
            Car car = new Car();  
            car.setWheel(wheel());  
            return car;  
        }  
        @Bean   
        public Wheel wheel() {  
            return new Wheel();  
        }  
    }  
    

    @EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。

    @ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。

    @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

    @Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

    @Autowired() @Qualifier("baseDao")     
    private BaseDao baseDao;  
    

    @Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,

    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。如:

    @Resource(name="baseDao")     
    private BaseDao baseDao; 
    

    @RequestMapping:@RequestMapping(“/path”)表示该控制器处理所有“/path”的URL请求。

    @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。(也就是return的代码返回到页面上)

      @RequestMapping(path = {"/", "/index"})
        @ResponseBody
        public String index(HttpSession httpSession) {
            logger.info("VISIT HOME");
            return wendaService.getMessage(2) + "Hello NowCoder" + httpSession.getAttribute("msg");
        }
    

    @Controller:用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping

    @Service:一般用于修饰service层的组件

    @PathVariable是用来获得请求url中的动态参数的

    在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取

    直接在Controller里面加上用@ExceptionHandler标注一个处理异常的方法,如下面的例子:

     @RequestMapping(path = {"/admin"}, method = {RequestMethod.GET})
        @ResponseBody
        public String admin(@RequestParam("key") String key) {
            if ("admin".equals(key)) {
                return "hello admin";
            }
            throw  new IllegalArgumentException("参数不对");
        }
    
        @ExceptionHandler()
        @ResponseBody
        public String error(Exception e) {
            return "error:" + e.getMessage();
        }
  • 相关阅读:
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
  • 原文地址:https://www.cnblogs.com/scnulyp/p/7420646.html
Copyright © 2011-2022 走看看