今天学习了关于springboot自动化配置相关内容,这里通知自定义一个简单的spring-boot-starter项目帮助理解
1. 创建一个普通的Maven项目
1.1 首先创建一个普通的Maven项目,然后在pom文件中引入springboot自动配置依赖包spring-boot-autoconfigure
1.2 创建一个普通java类PersonProperties
,使用@ConfigurationProperties
进行标注,将配置文件application.yml / application.properties
中以person
开头的配置与该类中的属性一一对应
1.3 创建一个业务列PersonService
,定义一个showPersonInfo
获取personProperties
对象的属性值
1.4 这是关键类,创建一个自动化配置类PersonAutoConfiguration
,使用@Configuration标注表明该类是一个配置类,@EnableConfigurationProperties
使PersonProperties类的@ConfigurationProperties
注解生效并将配置文件中的属性注入到PersonProperties类的实例bean中,@ConditionOnClass
注解表示只有个在classpath下存在PersonService类时该配置这里的配置才生效,@Bean
标注的方法的返回对象放入springIOC容器中
1.5 然后在项目resources目录下创建一个META-INF目录,并创建spring.factories文件
spring.factories文件内容:
因为springboot项目的启动类都有@SpringBootApplication
注解,该注解又被@EnableAutoConfiguration
注解标注,表示启用自动配,而该注解会引入一个AutoConfigurationImportSelector
类,该类会自动扫描META-INF/spring.factories
文件,并加载里面配置的自动化配置类
1.6 将该Maven项目打包发布的到本地Maven仓库
发布成功:
2. 创建一个SpringBoot项目
2.1 创建一个Springboot项目引入以上的项目person-spring-boot-starter
引入成功后可以在外部类库中看到:
2.2 创建一个测类,注入PersonService的实例进行测试
2.3 在没有在application.yml配置文件中配置属性是运行正常,打印的是默认配置信息,结果如下:
2.4 在配置文件中配置相关属性
2.5 配置后运行结果与配置信息一致,成功运行: