三大核心注解

1、@Configuration
这是spring3.0添加的一个注解,用来代替applicationContext.xml配置文件,所有这个配置文件里能做到的事情都可以通过这个注解所在类来进行注册。

@Bean:代替XML配置文件里面的bean配置。
@ImportResource:如果有些通过类的注册方式配置不了的,可以通过这个注解引入其他的XML配置文件。
@Import:用来引入额外的一个或多个@Configuration修饰的配置文件类。
@SpringBootConfiguration:这个注解就是@Configuration注解的变体,只是用来修饰SpringBoot配置。源码:

@Target(ElementType.TYPE)
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Configuration
 public @interface SpringBootConfiguration {}

2、@ComponentScan
这是Spring3.1添加的一个注解,用来代替配置文件中的component-scan配置,开启组件扫描,即自动扫描包路径下的@Component注解进行注册Bean实例到context中。

另外,@ComponentScans是可重复注解,即可以配置多个,用来配置注册不同的子包。

3、@EnableAutoConfiguration
这是Springboot诞生就有的,用来提供自动配置。

最主要的注解是@SpringBootApplication,包括了以上三个核心注解,直接使用这个注解就ok了。

@Target(ElementType.TYPE)
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Inherited
 @SpringBootConfiguration
 @EnableAutoConfiguration
 @ComponentScan(excludeFilters = {
 @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
 @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
 public @interface SpringBootApplication {
 }

常用注解

4、@Conditional
这是Spring4.0添加的新注解,用来标识一个SpringBean或Configuration配置文件,当满足指定条件之后才开启配置。

5、@ConditionalOnBean
组合@Conditional注解,当容器中有指定的Bean才开启配置。

6、ConditionalOnMissingBean
组合@Conditional注解,和@ConditionalOnBean相反,当容器中没有指定的Bean才开启配置。

7、@ConditionalOnClass
组合 @Conditional 注解,当容器中有指定的 Class 才开启配置。

8、@ConditionalOnMissingClass
组合 @Conditional 注解,和 @ConditionalOnMissingClass 注解相反,当容器中没有指定的 Class 才开启配置。

9、@ConditionalOnWebApplication
组合 @Conditional 注解,当前项目类型是 WEB 项目才开启配置。
当前项目有以下 3 种类型:

enum Type {
 /**
 * Any web application will match.
 */
 ANY,/**
 * Only servlet-based web application will match.
 */
SERVLET,

/**
 * Only reactive-based web application will match.
 */
REACTIVE}

10、@ConditionalOnNotWebApplication
组合 @Conditional 注解,和 @ConditionalOnWebApplication 注解相反,当前项目类型不是 WEB 项目才开启配置。

11、@ConditionalOnProperty
组合 @Conditional 注解,当指定的属性有指定的值时才开启配置。

12、@ConditionalOnJava
组合 @Conditional 注解,当运行的 Java JVM 在指定的版本范围时才开启配置。

13、@ConditionalOnResource
组合 @Conditional 注解,当类路径下有指定的资源才开启配置。

14、@ConfigurationProperties
用来加载额外的配置(如 .properties 文件),可用在 @Configuration 注解类,或者 @Bean 注解方法上面。
@EnableConfigurationProperties
一般要配合 @ConfigurationProperties 注解使用,用来开启对 @ConfigurationProperties 注解配置 Bean 的支持。

15、@AutoConfigureAfter
用在自动配置类上面,表示该自动配置类需要在另外指定的自动配置类配置完之后。

如 Mybatis 的自动配置类,需要在数据源自动配置类之后。

@AutoConfigureAfter(DataSourceAutoConfiguration.class)
 public class MybatisAutoConfiguration {@AutoConfigureBefore

表示该自动配置类需要在另外指定的自动配置类配置之前。

JNDI:Java命名和目录接口,提供一个目录系统,并将服务名称与对象关联起来,从而使开发人员在开发过程中可以使用名称来访问关联的对象。