Spring Boot实战之注解

Spring Boot中常有注解配置以及详细解释,包含@SpringBootApplication、@RestController、@Value等十几个常用注解

@SpringBootApplication注解

@SpringBootApplication注解是SpringBoot应用程序入口启动注解,也是一个组合注解,包括组合有@Configuration、 @EnableAutoConfiguration 和 @ComponentScan 注解。由于这些注解经常一起使用,Spring Boot设计者们就提供了一个方便的 @SpringBootApplication 注解来替代三者注解。

注意:Spring Boot会自动扫描@SpringBootApplication所在类的同级包以及下级包的Bean。这里往往导致启动工程时报扫描Bean错误问题,所以建议大家将入口类文件放置到最外部包目录下,保证所有Bean文件能被准确扫描。

注解源码如下:

Spring Boot实战之注解_第1张图片

@SpringBootApplication注解源码

@EnableAutoConfiguration注解

此注解告诉Spring Boot根据用户添加的jar包依赖来默认如何配置Spring。例如工程中添加了spring-boot-starter-web依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。

@ComponentScan

@componentScan是组件扫描注解,可自动发现和装配一些Bean。

@MapperScan

该注解扫描mapper文件配置路径,一般用于mybatis的xml格式文件扫描位置路径指定,列如:

@MapperScan(value = "com.lst.mapper")

即扫描com.lst.mapper路径下的所有*.Mapper.xml文件。

@RestController

@RestController是组合注解,属于Spring MVC注解,它不是Spring Boot特有注解。在以往的Spring MVC工程中,服务端返回JSON数据需要@ResponseBody和@Controller配合,而Spring 4.0后引入了@RestController注解作为两者的组合注解。

@RequestMapping

@RequestMapping注解属于Spring MVC注解,它不是Spring Boot特有注解。@RequestMapping注解提供了“路由”信息。它告诉Spring,任何具有路径为“/”的HTTP请求都应映射到home方法。

@ConfigurationProperties

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

@value注解一般与@ConfigurationProperties注解联合使用,其中@ConfigurationProperties相当声明了自定义propertites文件属性,那么@value就是对自定义属性取值,具体取值方式如下。

@value("${app.foo.name}")private String name;

@Profile

@profie注解提供了一种方法来隔离应用程序配置的各个部分,并使其仅在特定的环境中可用,例如项目工程在生产、开发或者测试等不同环境都会有不同的属性值配置,这个时候就可以使用@profile注解进行特定配置。(具体介绍后期作者会单独讲解,这里就不再举例说明了)

@JsonComponent

Spring Boot提供了一个@JsonComponent注释对JSON数据进行序列化和反序列化。

@ControllerAdvice

@ControllerAdvice是spring3.2提供的新注解,用于返回特定的异常类型,一般与@ExceptionHandler配合使用。

@EnableHypermediaSupport

顾名思义,@EnableHypermediaSupport注解为启用超媒体支持,如果开发开发中使用超媒体的 RESTful API,可以使用@EnableHypermediaSupport 控制 Spring HATEOAS 的配置。


你可能感兴趣的:(Spring Boot实战之注解)