Java springboot自动配置和导入自定义的配置文件

一、自动配置

已知的是在启动类上启动程序时,在.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进行注入并使用

Java springboot自动配置和导入自定义的配置文件_第1张图片

 Java springboot自动配置和导入自定义的配置文件_第2张图片

 Java springboot自动配置和导入自定义的配置文件_第3张图片

 Java springboot自动配置和导入自定义的配置文件_第4张图片

 

 最后在META-INF文件夹下加载spring.factories文件,根据导入的依赖加入ioc容器Java springboot自动配置和导入自定义的配置文件_第5张图片

二、通过包扫描@ComponeScan注解扫描进入ioc容器

(注意不能在程序启动类上面写,会覆盖掉原有的导入依赖)

如:这里在通用类(common)里面写入属性

Java springboot自动配置和导入自定义的配置文件_第6张图片

 在具体使用的模块路径下:

Java springboot自动配置和导入自定义的配置文件_第7张图片

 声明该类为配置类,同时通过扫描加入ioc容器Java springboot自动配置和导入自定义的配置文件_第8张图片

 这一种也能实现。类似于 META-INF里面的spring.factories。

你可能感兴趣的:(java,spring,boot,spring)