前言
在使用SpringBoot时,如果我们直接引入第三方包,那么这些第三包中的Bean对象是不会被直接加入到IOC容器中,如果想要将第三方包中的Bean对象加入到IOC容器中,我们只能手写配置类
@Configuration
或是使用@Import
引入Bean对象所在的类。但是在实际开发中,一些第三方开发者提供了形如xxx-spring-boot-starter
的依赖包,引入这些依赖包后,我们会惊讶的发现,这些第三方包中的Bean对象居然直接的自动注入到IOC容器中,其实这就运用了SpringBoot的自动配置原理
自动配置原理的两个包
-
xxx-spring-boot-starter
自动配置原理的启动类,一个只有pom.xml文件没有任何源代码的maven工程,作为入口导入配置类和其他项目中的被依赖包
-
xxx-spring-boot-autoconfigure
自动配置原理的实现类,用于封装Java代码,和配置需要用到的依赖,同时需要编写resources/META-INF/spring.factories
文件或META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
指定SpringBoot启动时装载的配置类
xxx-springboot-starter中pom.xml的实现
引入xxx-spring-boot-autoconfigure
就好了,其他都不需要弄
dependency>
groupId>com.examplegroupId>
artifactId>tencent-spring-boot-autoconfigureartifactId>
服务器托管网 version>0.0.1-SNAPSHOTversion>
dependency>
xxx-springboot-autoconfigure的实现
在src下编写实现类和业务代码,之后创建一个配置类作为SpringBoot导入Bean对象的入口
//配置类代码如下
@Configuration
//这个是构造Bean时需要引入的参数
@EnableConfigurationProperties(TencentProperties.class)
public class TencentAutoConfiguration {
@Bean
public TencentCloud tencentCloud(TencentProperties tencentProperties){
TencentCloud tencentCloud=new TencentCloud();
tencentCloud.setTencentProperties(tencentProperties);
return tencentCloud;
}
}
此外还需要在resources/META-INF/spring.factories
文件或META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中声明配置类的信息
spring.factories
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration= #这个是固定格式
com.example.tencentspringbootautoconfigure.TencentAutoConfiguration #这个是你自己的Configuration类的包路径
org.springframework.boot.autoconfigure.AutoConfiguration.imports
# Auto Configure
com.example.tencentspringbootautoconfigure.TencentAutoConfiguration #这个是你自己的Confi服务器托管网guration类的包路径
上面二选一即可
打包
先maven install
配置类,再maven install
启动类即可生成你自己的starter
依赖包,接下来可以直接在项目中引用了。此时第三方依赖包中的Bean对象就自动注入到IOC容器中了,你可以直接通过@Autowired
使用了
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net