Spring 相关注解

  • spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。
    在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。
    虽然目前这3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。
    所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释。
    @Service 用于标注业务层组件
    @Controller 用于标注控制层组件(如struts中的action)
    @Repository 用于标注数据访问组件,即DAO组件
    @Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
    Spring2.5为我们引入了组件自动扫描机制,他在类路径下寻找标注了上述注解的类,并把这些类纳入进spring容器中管理。

  • @RestController
    为了方便Rest开发,通过新的 @RestController 指定在控制器上,就不需要在每个 @RequestMapping 方法上加 @ResponseBody 了。
    可以这样理解:

  1. 单独使用 @Controller,页面进行跳转。
  2. 使用 @Controller + @ResponseBody,将 return 的值写入Response对象的body数据区,用来返回 json、xml 等格式的数据。
  3. @RestController = @Controller + @ResponseBody。
  • @RequestMapping
    此注解提供路由信息。

  • @ResponseBody
    作用:
    该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
    使用时机:
    返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

  1. 这样配置:
@RequestMapping("[url]") 
@ResponseBody 

将会在访问的页面上输出字符串,而不会跳转到指定的页面。
只需删除注解:@ResponseBody 便可以返回页面,且不会在页面上输出字符串。

  • @Autowired 自动装配
    Spring 2.5 引入了 @Autowired 注解,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。

  • @EnableAutoConfiguration
    此注解的作用:让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减少了开发人员的工作量。
    如果配置了 spring-boot-starter-web,会添加 Tomcat 和 Spring MVC,所以auto-configuration将假定你正在开发一个web应用,并对Spring进行相应地设置。

  • @SpringBootApplication
    注解等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan

  • @Import
    用来导入其他配置类。

  • @ImportResource
    用来加载xml配置文件。

  • @Bean
    用@Bean标注方法等价于XML中配置的bean。

  • @Value
    注入Spring boot application.properties配置的属性的值。

  • @Qualifier
    @Qualifier限定描述符除了能根据名字进行注入,还能进行更细粒度的控制如何选择候选者,具体使用方式如下:

    @Autowired
    @Qualifier(value = "demoInfoService") 
    private DemoInfoService demoInfoService;
  • @Inject
    等价于默认的@Autowired,只是没有required属性。
原文地址:https://www.cnblogs.com/cag2050/p/6873208.html