springBoot自动配置的一些理解

Spring是一个很厉害的框架,它帮助程序员做了很多繁琐且重复的工作,帮助程序员从繁杂的配置文件中解脱出来,它内部集成了嵌入式的Tomcat,他能将web应用以jar包的方式运行,而且可以通过springBoot的插件将maven项目直接打包成可执行的jar文件等等,那么它到底是怎么实现一系列神奇的功能呢?这篇博客用来记录自己对springBoot自动配置的一点浅显的理解,如果有不对的地方希望能有大佬多多指教。
首先springBoot的入口类上需要加一个注解@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}
)}
)

其中最重要的注解是下面这两个

@SpringBootConfiguration
@EnableAutoConfiguration
@SpringBootConfiguration中的注解其实就是将标注这个注解的类当作Spring容器中的一个组件进行加载

然后就是@EnableAutoConfiguration注解了,是长下面这个样子(截取了一部分)

@Inherited
@AutoConfigurationPackage //这个注解的作用是扫描当前类下所有包中的组件并将他们加载到spring容器中
@Import({EnableAutoConfigurationImportSelector.class})

这个注解中最重要的就是上面两个注解@AutoConfigurationPackage解释写在代码后面了。
@Import({EnableAutoConfigurationImportSelector.class})这个注解是Spring中的原生注解,其实就是通过注解参数内的类进行判断要导入那些类到Spring容器中。
这里要说一下,在springBoot中并没有事先配置好的xml文件,而是写好的一个个的自动配置类并用@Configuration标注,自动配置类就相当于XML文件,自动配置类其实也是一个个的组件,当这些组件被Spring加载的时候spring会对自动配置类内部进行解析执行,然后将配置类内部定义的bean加载到spring容器中,这样就相当于配置了XML文件。

一句话说明白就是,SpringBoot会扫描主方法所在包以及主方法所在包的子包下的所有类,只要有包含
spring注解的类就加载进spring容器中,相当于xml文件中的<context:component-scan base-package=“com.XXX.service.*”></context:component-scan>,即注解扫描,然后会根据逻辑判断加载指定的自动配置类,这些自动配置类中配置好了一些约定好的类的属性,例如springMVC中的视图解析器的解析规则,将各种组件加载到spring容器中就完成了自动配置的功能。
主要就是用到了spring中的@Congfigiration和@Import功能,然后就是写好了一大堆事先写好的自动配置类,通过逻辑判断需要哪些组件就加载那些组件的自动配置就行了。不知道说明白没
然而关于SpringBoot的好处远不止这些,对于SpringBoot的学习还有很长的路要走!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值