文章目录
1. 前言
在没有SpringBoot
之前呢,肯定是使用的Spring
。Spring
有一个问题就是配置这些东西写起来比较的繁琐。为了解决这个问题就有了SpringBoot
,用起来非常的爽,很多东西都不用配置。其理念就是约定大于配置的理念,比如配置同一个东西,大家都是这样配置,那么为什么不做一个默认的配置呢?下面的例子使用Spring-Data-Redis
的例子进行对比。
2. 对比
2.1 Spring中配置
-
pom 忽略
-
新建properties文件:
-
spring中配置:
-
然后直接注入使用
2.2 SpringBoot 中配置
-
引入pom
-
在
application.yml
配置
- 直接使用
3. 思考
为什么我们就引入了一个坐标,并且配置了redis所需要的参数之后,就没干别的就能用了呢?
经过猜测,是不是SpringBoot给我们提供了一个默认的配置呢?这个就是所谓的自动装配。
4. 源码浅探究
4.1 入口
创建SpringBoot工程的时候,引入了对应的starter 同时在配置一下application.yml 就可以进行使用了,就是这么的方便。那么到头来就写了一个@SpringBootApplication注解,那么其入口肯定是在这里了。
4.2 SpringBootApplication注解的结构()
4.3 AutoConfigurationImportSelector
因为其是一个ImportSelector
所以要直接查看selectImports
方法:
4.4 自动装配配置类的查看(以Redis的配置为例)
从上面我们已经了解了SpringBoot已经将项目中用到的自动配置类加到spring 的容器中。下面就来看看这个默认的配置类是个什么样子的把。
上面的配置类,配置的什么东西,没有什么多说的。关键点是,这个配置类什么时候生效(放入Spring 容器)的。
4.5 自动装配配置类加载条件(以redis为例)
当所有的@Conditionxxx条件都成立的时候,此配置类才会生效(放入spring容器)
注解详情查看第5节
5. 用到的注解解释
对应的配置文件
6. 总结
总的来说,没有什么东西。我都不知道怎么写。
附录
1.附录1
如何证明是找的这个呢?看下图: