一、自动配置
已知的是在启动类上启动程序时,在.pom文件加入的依赖就会自动加入ioc容器中,这里主要有三个注解。在启动类启动时加载@SpringBootApplication注解
-
在@SpringBootApplication注解里面包含三个注解:@ComponentScan,@Configuration,@EnableAutoConfiguration
-
@Configuration表明启动类是一个配置类
-
@ComponentScan自动扫描启动类所在目录及子目录在Spring组件,让其实例化
-
@EnableAutoConfiguration注解里面包含AutoConfigurationImportSelector配置类 在AutoConfigurationImportSelecto配置类中会读取springboot自动配置包中的META-INF的spring.factories文件
-
该spring.factories文件包含一百多个SpringBoot写好的自动配置类,但这些自动配置类并不是默认生效的,而是根据环境中导入starter启动器依赖及自动配置类上@ConditionalOnClass注解来决定该配置类是否生效。一旦自动配置类生效了,里面@Bean注解会把创建实例放入IOC容器,我们在项目中就可以随时使用@Autowired进行注入并使用
最后在META-INF文件夹下加载spring.factories文件,根据导入的依赖加入ioc容器
二、通过包扫描@ComponeScan注解扫描进入ioc容器
(注意不能在程序启动类上面写,会覆盖掉原有的导入依赖)
如:这里在通用类(common)里面写入属性
在具体使用的模块路径下:
声明该类为配置类,同时通过扫描加入ioc容器
这一种也能实现。类似于 META-INF里面的spring.factories。