SpringBoot注解速查

1. @SpringBootApplication

SpringBoot的启动注解:包含了@ComponentScan@Configuration@EnableAutoConfiguration注解。

2. @ComponentScan

用于类或接口上,spring会把指定路径下带有指定注解的类自动装配到bean容器里。常见的注解有:@Controller@Service@Component@Repository

常用属性功能
basePackages、value指定扫描路径,如果为空则以@ComponentScan注解的类所在的包为基本的扫描路径
basePackageClasses指定具体扫描的类
includeFilters指定满足Filter条件的类
excludeFilters指定排除Filter条件的类

3. @Configuration

作用:用于定义配置类,替代spring的applicationContext.xml文件,完成spring容器的初始化。

4. @EnableAutoConfiguration

开启自动配置:尝试根据你添加的jar依赖自动配置你的Spring应用。
例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。
你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。
如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性exclude来禁用它们。

5. @Component、@Repository、@Service

组件注解,被这些注解修饰的类就会被Spring扫描到并注入到Spring的bean容器中。

注解功能
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
@Service一般用于修饰service层的组件,只是标注该类处于业务逻辑层。

6. @Resource、@AutoWired、@Qualifier、@Inject

注入注解。

注解功能
@Resource@Resource(name="name",type="type")如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
@AutoWired自动装配注解:
1. 可以在成员字段,setter 方法,构造函数中使用
2. 默认通过byType注入,如果有多个实现实例则会抛异常
3. 如果有多个实例,则用@Qulifier注解配合使用(@Qulifier(“bean名称”))
4.如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
@Qualifier当IOC容器中有多个接口实例时用于过滤所需的实例
1.和@Autowired配合使用
2.在@Bean修饰方法时注解形参

@Autowired 与 @Resource 的区别:

  1. @Autowired@Resource 都可以用来装配bean,都可以写在字段上,或写在setter方法上。
  2. @Autowired 默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用
@Autowired()
@Qualifier("baseDao")
private BaseDao baseDao;

3、@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

7. @Controller

spring-mvc的注解,用于定义控制器类,具有将请求进行转发,重定向的功能,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层)

8. @ResponseBody

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

9. @RestController

该注解是 @Controller@ResponseBody 的合集,表示这是个控制器Bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。

10. @RequestMapping

是一个用来处理请求地址映射的注解,可用于类或方法上。
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

属性功能
value指定请求的实际地址,指定的地址可以是URI Template 模式
method指定请求的method类型, GET、POST、PUT、DELETE等
consumes指定处理请求的提交内容类型(Content-Type),如application/json,text/html。
produces指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
params指定request中必须包含某些参数值时,才让该方法处理。
headers指定request中必须包含某些指定的header值时,才能让该方法处理请求。

11. @RequestParam:

接收普通参数,用在方法的参数前面,将请求参数绑定到你控制器的方法参数上。

属性功能
value参数名
required是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就异常。
defaultValue默认参数值,如果设置了该值,required=true将失效,自动为false;如果没有传该参数,就使用默认值。

12. @PathVariable

路径变量,接收请求路径中占位符的值,可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable("xxx")

13. @RequestBody

接收来自requestBody的参数,一般用于处理非 Content-Type: application/x-www-form-urlencoded 编码格式的数据,比如:application/json、application/xml 等类型的数据。

14. @Import

用来导入其他配置类。

15. @ImportResource

用来加载xml配置文件。

16. @Value

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

17. @Bean

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

18. @ControllerAdvice

统一处理异常。

19. @ExceptionHandler(Exception.class)

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

20. @RepositoryRestResourcepublic

设置rest请求路径。通过匹配路径中的参数完成对数据库的访问。配合spring-boot-starter-data-rest使用。

21. @ConfigurationProperties

配置属性注解,用于读取springboot的配置文件属性。

22. @PropertySource

加载配置文件注解,用于加载 .properties 配置文件。

23. @ImportResource

加载配置文件注解,用于加载 .xml 配置文件。