赞
踩
SpringBoot的自动配置就是当Spring容器启动后,一些自动配置类(只是自动配置类,并不是当前的组件配置到IOC容器中,自动配置类通过@Conditional注解来按需配置)就自动装配的IOC容器中,不需要我们手动注入,从而简化了开发,省去繁琐的配置。
可以在Application.properties中增加的属性值
一个SpringBoot工程如果想运行成功,就必须有一个主程序类(被@SpringBootApplication注解标识),而自动配置的相关工作就在@SpringBootApplication这个注解上。
当我们进入@SpringBootApplication注解的源码当中,可以发现它是一个复合注解,它由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解组成。
1、@SpringBootConfiguration
在@SpringBootConfiguration源码中可以发现有@Configuration,代表一个配置类,说明主程序类也是一个配置类。
2、@ComponentScan
指定扫描哪些组件,默认是扫描主程序所在的包以及其子包。
3、@EnableAutoConfiguration
1 2 3 4 5 6 7 |
|
@AutoConfigurationPackage注解
将指定的一个包下的所有组件导入容器当中
自动配置包
在@AutoConfigurationPackage注解中存在一个@Import(AutoConfigurationPackages.Registrar.class)注解,自动配置包就是通过这个Registrar类的方法来完成的。
1 2 |
|
由于@AutoConfiguraionPackage是在@EnableAutoConfiguration中,所以@AutoConfigurationPackage是标识在主程序类上,所以metadata为主程序类。
在Registrar中的registerBeanDefinitions方法,首先获取到注解所标识的类,然后将这个类所在的包以及子包的名称放入到一个String数组当中,再将String数组中的包的所有组件导入到容器当中。
1 2 3 4 5 |
|
这个方法的意思就是将包下的所有组件导入,获取到包名,然后将包名存放到一个String数组中,Register的作用就是将包下的所有组件导入。这也是为什么Spring容器启动后会自动导入 主程序所在的包及其子包中的所有组件。
@Import(AutoConfigurationImportSelector.class)
1 2 3 4 5 6 7 8 |
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。