Spring Boot核心注解讲解-阿里云开发者社区

开发者社区> 开发与运维> 正文

Spring Boot核心注解讲解

简介:

Spring Boot最大的特点是无需XML配置文件,能自动扫描包路径装载并注入对象,并能做到根据classpath下的jar包自动配置。

所以Spring Boot最核心的3个注解就是:

1,@配置

org.springframework.context.annotation.Configuration

这是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 { } 

2,@ ComponentScan

org.springframework.context.annotation.ComponentScan

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

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

关于重复注解,大家可以看这篇文章“ JAVA元注解@interface详解 ”。

3,@ EnableAutoConfiguration

org.springframework.boot.autoconfigure.EnableAutoConfiguration

看全路径就知道,这是自Spring Boot诞生时添加的注解,用来提供自动配置,上面的两个都是  spring-context 包下的,不属于Spring Boot,所以Spring 3.0之后的去XML配置方式已经为Spring靴埋下了伏笔!

自动配置更多详细使用及实战可以看这篇文章“ Spring Boot自动配置原理,实战 ”。

最后的彩蛋

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 

原文链接

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章