1.主要讲解ConfigurationProperties的注解
@ConfigurationProperties 使用方式有两种
1、在类上使用该注解
2、在工厂方法上使用该注解 (@bean)
方法一:
@Getter
@Setter
@Configuration
@PropertySource("classpath:db.properties")
@ConfigurationProperties(prefix = "spring.datasource.sakila")
public class DbConfigInfo {
private String url;
private String username;
private String password;
private String driverClassName;
private String initialSize;
private String maxIdle;
private String minIdle;
}
方法二:
@Configuration
@PropertySource("classpath:db.properties")
public class DBConfig {
@Primary
@Bean("libraryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.library")
public DataSource sakilaDataSource() {
return DataSourceBuilder.create().build();
}
@Bean("sakilaDataSource")
@ConfigurationProperties(prefix = "spring.datasource.sakila")
public DataSource libraryDataSource() {
return DataSourceBuilder.create().build();
}
}
SpringBoot 是如何通過@ConfigurationProperties來获取配置信息的呢?
我们知道,SpringBoot在启动时默认会加载一些类,其中包含了AbstractAutowireCapableBeanFactory, 从而触发了applyBeanPostProcessorsBeforeInitialization接口,applyBeanPostProcessorsBeforeInitialization接口中调用了ConfigurationPropertiesBindingPostProcessor的postProcessBeforeInitialization接口。
参考博客:https://blog.csdn.net/u013725455/article/details/79352459