-
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 了。
可以这样理解:
- 单独使用 @Controller,页面进行跳转。
- 使用 @Controller + @ResponseBody,将 return 的值写入Response对象的body数据区,用来返回 json、xml 等格式的数据。
- @RestController = @Controller + @ResponseBody。
-
@RequestMapping
此注解提供路由信息。 -
@ResponseBody
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
- 这样配置:
@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属性。