Spring Boot中常有注解配置以及详细解释,包含@SpringBootApplication、@RestController、@Value等十几个常用注解
@SpringBootApplication注解是SpringBoot应用程序入口启动注解,也是一个组合注解,包括组合有@Configuration、 @EnableAutoConfiguration 和 @ComponentScan 注解。由于这些注解经常一起使用,Spring Boot设计者们就提供了一个方便的 @SpringBootApplication 注解来替代三者注解。
注意:Spring Boot会自动扫描@SpringBootApplication所在类的同级包以及下级包的Bean。这里往往导致启动工程时报扫描Bean错误问题,所以建议大家将入口类文件放置到最外部包目录下,保证所有Bean文件能被准确扫描。
注解源码如下:
此注解告诉Spring Boot根据用户添加的jar包依赖来默认如何配置Spring。例如工程中添加了spring-boot-starter-web依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。
@componentScan是组件扫描注解,可自动发现和装配一些Bean。
该注解扫描mapper文件配置路径,一般用于mybatis的xml格式文件扫描位置路径指定,列如:
@MapperScan(value = "com.lst.mapper")
即扫描com.lst.mapper路径下的所有*.Mapper.xml文件。
@RestController是组合注解,属于Spring MVC注解,它不是Spring Boot特有注解。在以往的Spring MVC工程中,服务端返回JSON数据需要@ResponseBody和@Controller配合,而Spring 4.0后引入了@RestController注解作为两者的组合注解。
@RequestMapping注解属于Spring MVC注解,它不是Spring Boot特有注解。@RequestMapping注解提供了“路由”信息。它告诉Spring,任何具有路径为“/”的HTTP请求都应映射到home方法。
Spring Boot将工程配置信息与application.properties 或者or .yml文件绑定,@ConfigurationProperties作用于将属性进行绑定,它可以把同类的配置信息自动封装成实体类,即用户可以用实体类来装载并配置文件信息。看看官方Demo实例:
application.propertites文件如下:
app.foo.name=Hello,Spring Boot
创建一个FooPropertites类文件,代码如下:
@ConfigurationProperties("app.foo")public class FooProperties { private String name; public String getName() { ... } public void setName(String name) { ... } @DeprecatedConfigurationProperty(replacement = "app.foo.name")@Deprecatedpublic String getTarget() { return getName();} @Deprecatedpublic void setTarget(String target) {setName(target);}}
上面的代码确保弃用的属性仍然有效(委托给幕后的名称属性)。一旦getTarget和setTarget方法可以从您的公共API中删除,元数据中的自动弃用提示也将消失。如果您想要保留一个提示,那么添加带有错误弃用级别的手动元数据,可以确保用户仍然了解该属性,并且在提供替换时尤其有用。
@value注解一般与@ConfigurationProperties注解联合使用,其中@ConfigurationProperties相当声明了自定义propertites文件属性,那么@value就是对自定义属性取值,具体取值方式如下。
@value("${app.foo.name}")private String name;
@profie注解提供了一种方法来隔离应用程序配置的各个部分,并使其仅在特定的环境中可用,例如项目工程在生产、开发或者测试等不同环境都会有不同的属性值配置,这个时候就可以使用@profile注解进行特定配置。(具体介绍后期作者会单独讲解,这里就不再举例说明了)
Spring Boot提供了一个@JsonComponent注释对JSON数据进行序列化和反序列化。
@ControllerAdvice是spring3.2提供的新注解,用于返回特定的异常类型,一般与@ExceptionHandler配合使用。
顾名思义,@EnableHypermediaSupport注解为启用超媒体支持,如果开发开发中使用超媒体的 RESTful API,可以使用@EnableHypermediaSupport 控制 Spring HATEOAS 的配置。