本文共 1784 字,大约阅读时间需要 5 分钟。
Spring Boot最大的特点是无需XML配置文件,能自动扫描包路径装载并注入对象,并能做到根据classpath下的jar包自动配置。
所以Spring Boot最核心的3个注解就是:
这是Spring 3.0添加的一个注解,用来代替applicationContext.xml配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类进行注册。
下面几个相关注解也是非常重要的!
用来代替XML配置文件里面的 <bean ...> 配置。
@ImportResource
如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的XML配置文件,有些老的配置文件无法通过 @Configuration 方式配置的非常管用。
@进口
引入用来额外的一个或者多个 @Configuration 修饰的配置文件类。
@SpringBootConfiguration
这个注解就是@Configuration 注解的变体,只是 用来修饰是Spring Boot配置而已,或者可利于Spring Boot后续的扩展,源码如下。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }
这是Spring 3.1添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册bean实例到context中。
另外,@ComponentScans 是可重复注解,即可以配置多个,用来配置注册不同的子包。
关于重复注解,大家可以看这篇文章“ ”。
看全路径就知道,这是自Spring Boot诞生时添加的注解,用来提供自动配置,上面的两个都是 spring-context 包下的,不属于Spring Boot,所以Spring 3.0之后的去XML配置方式已经为Spring靴埋下了伏笔!
自动配置更多详细使用及实战可以看这篇文章“ ”。
Spring Boot最核心的3个注解介绍完了,大家可能会有疑问,为什么最主要的注解 @SpringBootApplication 不在其中?
留给大家的彩蛋,其实这个 @SpringBootApplication 注解就包含了以上3个主要注解,平时没有自定义配置的需求,则使用 @SpringBootApplication 注解完全就可以了!
我们让下来看 @SpringBootApplication 注解的源码,一切明了!
@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 { ... }
本文来自云栖社区合作伙伴“开源中国”
本文作者:DemonsI
转载地址:http://ouuio.baihongyu.com/