zoukankan      html  css  js  c++  java
  • SpringBoot中常见注解含义总结

    @RestController

    @RestController被称为一个构造型(stereotype)注解。它为阅读代码的开发人员提供建议。对于Spring,该类扮演了一个特殊角色。它继承自@Controller注解。4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController。

     

    @RequestMapping

    注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到home方法。@RestController注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。该注解有六个属性:

    params:指定request中必须包含某些参数值是,才让该方法处理。

    headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

    value:指定请求的实际地址,指定的地址可以是URI Template 模式

    method:指定请求的method类型, GET、POST、PUT、DELETE等

    consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html

    produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

     

    @GetMapping是一个组合注解,是@RequestMapping(method =RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。
    @PostMapping也是一个组合注解,是@RequestMapping(method =RequestMethod.POST)的缩写。

     

    @EnableAutoConfiguration

    @EnableAutoConfiguration。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定正在开发一个web应用并相应地对Spring进行设置。Starter POMs和Auto-Configuration设计auto-configuration的目的是更好的使用"Starter POMs",但这两个概念没有直接的联系。可以自由地挑选starter POMs以外的jar依赖,并且Spring Boot将仍旧尽最大努力去自动配置你的应用

     

    @Configuration

    Spring Boot提倡基于Java的配置。尽管可以使用一个XML源来调用SpringApplication.run(),但官方建议使用@Configuration类作为主要源。一般定义main方法的类也是主要@Configuration的一个很好候选。不需要将所有的@Configuration放进一个单独的类。@Import注解可以用来导入其他配置类。另外也可以使用@ComponentScan注解自动收集所有的Spring组件,包括@Configuration类。

    如果需要使用基于XML的配置,官方建议仍旧从一个@Configuration类开始。可以使用附加的@ImportResource注解加载XML配置文件。

    @Configuration注解该类,等价与XML中配置beans;用@Bean标注方法等价于XML中配置bean。

     

    @ComponentScan

    表示将该类自动发现扫描组件。如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。可以自动收集所有的Spring组件,包括@Configuration类。如果没有配置,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类。

     

    @SpringBootApplication

    @SpringBootApplication // 等同于@Configuration @EnableAutoConfiguration @ComponentScan 

     

    @Profiles

    Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。

     

    @ControllerAdvice

    包含@Component。可以被扫描到。统一处理异常。

     

    @ExceptionHandler

    用在方法上面表示遇到这个异常就执行以下方法。

    /**
     * 全局异常处理
     */ 
    @ControllerAdvice 
    public class GlobalDefaultExceptionHandler { 
        public static final String DEFAULT_ERROR_VIEW = "error"; 
    @ExceptionHandler({TypeMismatchException.class,NumberFormatException.class}) 
        public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception { 
            ModelAndView mav = new ModelAndView(); 
            mav.addObject("error","参数类型错误"); 
            mav.addObject("exception", e); 
            mav.addObject("url", RequestUtils.getCompleteRequestUrl(req)); 
            mav.addObject("timestamp", new Date()); 
            mav.setViewName(DEFAULT_ERROR_VIEW); 
            return mav; 
        }
    }
    @value

    通过@value注解来读取application.properties里面的配置,使用实例参考:

    /************** application.properties *************/
    qq_api_key=********1***********
    qq_api_secrt=******2***********
    /************* Java **************/
    @Value("${qq_api_key}") 
    private String API_KEY; 
    @Value("${qq_api_secrt}") 
    private String API_SECRET;

     

    @ResponseBody

    表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。如异步获取json数据,加上@Responsebody后,会直接返回json数据。

     

    @Component

    泛指组件,当组件不好归类时,可以使用这个注解进行标注。一般公共的方法会用上这个注解

     

    @RequestParam

    用在方法的参数前面,实例:

    @RequestParam String a=request.getParameter("a");

     

    @PathVariable

    路径变量注解,其参数与大括号里的名字一样要保持一致,实例:

    RequestMapping("yoodb/detail/{id}") 
    public String getByMacAddress(@PathVariable String id){ 
    //do something; 
    }

     

    @Inject

    等价于默认的@Autowired,只是没有required属性。

     

    @Bean

    相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

     

    @AutoWired

    自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

     

    @Qualifier

    当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:

    @Autowired
    @Qualifier(value = "demoInfoService")
    private DemoInfoService demoInfoService;

     

    @Resource(name="name",type="type")

    没有括号内内容的话,默认byName。与@Autowired类似。

  • 相关阅读:
    /etc/sysctl.conf 控制内核相关配置文件
    python 并发编程 非阻塞IO模型
    python 并发编程 多路复用IO模型
    python 并发编程 异步IO模型
    python 并发编程 阻塞IO模型
    python 并发编程 基于gevent模块 协程池 实现并发的套接字通信
    python 并发编程 基于gevent模块实现并发的套接字通信
    python 并发编程 io模型 目录
    python 并发编程 socket 服务端 客户端 阻塞io行为
    python 并发编程 IO模型介绍
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/9107449.html
Copyright © 2011-2022 走看看