一、SpringBootApplication
- 启动配置,它是一个组合注解;由EnableAutoConfiguration和SpringBootConfiguration注解组成
- 正常情况下,springboot的启动类使用这个注解就可以了
二、SpringBootConfiguration
这个注解用来标示启动类,正常一个springboot应用程序只能有一个类使用SpringBootConfiguration
三、EnableAutoConfiguration
- 获取springboot扫描的basePackages,依赖AutoConfigurationPackage实现
- 将META_INF/spring.factories文件中需要自动装配的类加载出来,通过AutoConfigurationImportSelector来实现
四、Condition
被该注解修饰的类必须要match方法返回为true,才会被注册到BeanDefinitionRegistry中,例如ConditionOnClass注解中配置多个类,如果这些类不存在,那么被它修饰的类就不会被注册
五、Conditional
它的属性是Condition的一个集合,只有当所有的Condition满足条件时,被修饰类才会被注册
六、EnableConfigurationProperties
该注解是将它属性配置的Class对象注册到BeanDefinitionRegistry中,这样就会触发Spring去加载对应的bean,而这些bean会被ConfigurationProperties修饰
七、ConfigurationProperties
它能将properties中的属性值注入到实体类中; 避免一个类配置多个Value注解
八、Configuration和Component注解的区别
Configuration注解的类spring会做cglib优化的,而component注解的类不会
附:SpringBoot自动装配注解总结
- SpringBootApplication注解是个组合注解,由EnableAutoConfiguration和SpringBootConfiguration组成,其中EnableAutoConfiguration用来开启自动配置,SpringBootConfiguration用来标示启动类,这样springboot就可以正常启动起来
- EnableAutoConfiguration开启自动装配主要是确定了basePackages以及将需要自动装配的类进行注册,创建bean的事交给spring就可以了
- basePackages和自动装配类的发现依赖与Import注解来实现
- springboot引入了条件注解的概念,也就是不同场景注册的类不一样,比如内置的web容器使用场景也不一样,Condition注解就是条件注解的核心
- springboot的自动装配通常都是默认的配置,比如tomcat的端口默认时8080,但是这个我们自己可以自定义,那么需要依赖ConfigurationProperties注解来实现