当我们初次接触到Springboot项目时,自动装配是我们接触到的第一个难点,然而我们用的时候感觉很方便极大的节省了xml的一些文件配置,但是这些底层是怎么做到的呢?让我们来攻克这个问题:
首先是,当我们启动一个springboot项目的时候,系统默认加载一个spring.factories的配置文件,如下
我们可以看到这个配置文件当中是一个个我们常用或者没见过的自动配置类,他们以javaconfig的方式配置注入再ioc容器当中,通过这个配置文件联系起来,我们可以称为自动配置管理中心(我自己起的名,哈哈哈),接下来加载完这个配置文件,并不会使得所有自动配置类都生效,而是每一个自动配置类都有有一个判断的条件,来判断当前是否满足自动装配的要求,@Conditional注解就是用来判断条件是否成立的,具体的步骤就是,判断当前自动配置类需要的启动器是否存在,例如下面这个web模块启动器
<!--启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
如果存在相应的启动器,那么加载这个启动器关联的所有依赖(也就是当前自动配置类需要的所有依赖),只有需要的依赖全部存在后,自动配置即可成功开启了;
然而我们开启后,我们如果修改默认的配置或者如何扩展,增加我们自己的一些东西呢?
让我们接着往下看
修改自动配置:
我们每一个自动配置类,XXXautoConfiguration,此处我们举例为WebMvcAutoConfiguration让我们点进去,我们往下找看到
通过@EnableConfigurtionProperties绑定了一个配置文件,那接下来就是我们再进去配置文件,看看里面到底是什么
amazing,全是属性,对没错,全是属性,而且属性存在默认值,我们发现了核心,就是这个配置文件,然而,我我们如何才能修改这些个值呢?,直接让我们来确实不简单,但是开发人员为我们准备好了,看到上面的注解没@configurationProperties(prefix=“spring.mvc”),我们可以在我们的核心配置文件也就是我们自己配置的yaml文件当中去直接修改,而这个prefix后面的就是这个配置文件的可以说是序号吧,我们可以直接通过序号点属性即可修改springboot自动配置文件的默认值了;其余的自动配置类也是同理,让我们私下多看几个练习一下举一反三!