网站是怎么制作出来的,百度seo排名工具,中国网站开发,网站策划书我们知道导入配置有两种#xff0c;一种是Value#xff0c;一种是ConfigurationProperties#xff0c;将对应的类标记为Component即可导入。但是被注解标识的类创建Bean有一个前提#xff0c;只对启动类所在的包路径下的所有带有Component等注解的类才会创建Bean。如果我们…我们知道导入配置有两种一种是Value一种是ConfigurationProperties将对应的类标记为Component即可导入。但是被注解标识的类创建Bean有一个前提只对启动类所在的包路径下的所有带有Component等注解的类才会创建Bean。如果我们封装的是一个公共依赖库这些配置是不会自动导入到我们的程序中的。这时需要AutoConfigure来实现。
1、定义一个类存储配置信息类的成员变量大家自行定义如果不想生成get和set方法可以使用Lombok的Getter和Setter注解。
Setter
Getter
Component
ConfigurationProperties(prefix app)
public class MyAppProperties {private Boolean testFlag;private String testName;
}
2、编写自动装配类用于导入配置并生成Bean实例。
AutoConfiguration
ConditionalOnClass({MyAppProperties.class})
EnableConfigurationProperties({MyAppProperties.class})
public class MyAppPropertiesAutoConfiguration {BeanConditionalOnMissingBean(name {myAppProperties})public MyAppProperties myAppProperties() {return new MyAppProperties();}
}
其中关键点有两个一是AutoConfigure注解用于自动导入配置二是EnableConfigurationProperties注解用于标记自动导入配置到MyAppProperties实例中。
3、按需增加条件注解。条件注解是为了确保依赖条件。
ConditionalOnClass用于确保指定类存在时才启用配置这也是很多依赖库可以在pom中引入后自动加载配置不引用依赖时不生效。
ConditionalOnMissingBean用于确保指定名称的Bean在IOC容器中不存在确保最终只有一个实例。
ConditionalOnMissingClass用于在某个类不存在时进行导入比如Springboot判断其他数据库连接池不存在时才实例化默认的HikariCP连接池。
ConditionalOnProperty通过配置文件的配置来控制配置类是否加入spring的IOC容器。
条件注解非常多不止可以用于自动导入场景可以单独写一篇了。
4、增加自动配置列表文件
在resources目录下增加META-INF/spring目录并新建文件org.springframework.boot.autoconfigure.AutoConfiguration.imports文件名一定不要错。
文件内容为第二步定义的Configure类的全路径包括完整包名每行写一个。 注在Springboot的2.7版本之前还可以放在META-INF/spring.factories文件中org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件功能与 spring.factories一样都是用来加载自动装配的类。但为了兼容性不推荐使用spring.factories了。
org.springframework.boot.autoconfigure.EnableAutoConfigurationorg.test.springboot.autoconfigure.MyAppPropertiesAutoConfiguration
5、之后将依赖库打包发布就可以自动导入配置了IDEA也会出现相应的智能提示。
应用侧的主函数有SpringBootApplication注解已经包含了EnableAutoConfiguration所以不需要额外代码了。