spring boot中@ConfigurationProperties的使用
作者:互联网
项目开发中,我们有时想把配置文件的信息,读取并自动封装成实体类,这样子,我们在代码里面使用就方便多了。我们可以使用@ConfigurationProperties,把配置信息自动封装成实体类使用。其中配置信息可以放在配置文件中或者配置中心,例如Nacos。
配置文件(中心)中信息如下:
liaowenhui.datasource: validationQuery: SELECT 1 jdbcUrl:jdbc:mysql://192.168.xx.xx:3306/xxx?useUnicode=true&characterEncoding=UTF-8 jdbcUserName: liaowenhui jdbcUserPassword: liaowenhui
定义一个实体类DataSourceProperties.java来装载配置文件信息
//从配置信息中搜索前缀为liaowenhui.datasource的信息,读取并自动封装成实体类
@ConfigurationProperties(prefix = "liaowenhui.datasource") public class DataSourceProperties {
private String validationQuery; private String jdbcUrl; private String jdbcUserName; private String jdbcUserPassword; public String getValidationQuery() { return validationQuery; } public void setValidationQuery(String validationQuery) { this.validationQuery = validationQuery; } public String getJdbcUrl() { return jdbcUrl; } public void setJdbcUrl(String jdbcUrl) { this.jdbcUrl = jdbcUrl; } public String getJdbcUserName() { return jdbcUserName; } public void setJdbcUserName(String jdbcUserName) { this.jdbcUserName = jdbcUserName; } public String getJdbcUserPassword() { return jdbcUserPassword; } public void setJdbcUserPassword(String jdbcUserPassword) { this.jdbcUserPassword = jdbcUserPassword; } }
使用@EnableConfigurationProperties(xxx.class)来明确指定需要用哪个实体类来装载配置信息
@Configuration @EnableConfigurationProperties({ DataSourceProperties.class }) public class DataSourceConfig { private static final Logger logger = LoggerFactory.getLogger(DataSourceConfig.class); @Bean(destroyMethod = "close") @RefreshScope public DataSource dataSourcePgProduct(DataSourceProperties dataSourceProperties) throws SQLException { logger.debug("数据库连接信息:{} ", dataSourceProperties.getJdbcUrl()); DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(dataSourceProperties.getJdbcUrl()); dataSource.setUsername(dataSourceProperties.getJdbcUserName()); dataSource.setPassword(dataSourceProperties.getJdbcUserPassword()); dataSource.setInitialSize(5); // 初始化连接大小 dataSource.setMaxActive(20); // 连接池最大使用连接数量 // dataSource.setMaxIdle(20);//连接池最大空闲 dataSource.setMinIdle(0); // 连接池最小空闲 dataSource.setMaxWait(60000); // 获取连接最大等待时间 dataSource.setValidationQuery(dataSourceProperties.getValidationQuery()); ...... dataSource.init(); return dataSource; }
说明: @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入,但是@EnableConfigurationProperties注解不是一定要使用的,可以直接使用@Autowired DataSourceProperties dataSourceProperties进行注入,如果不用的话,实体类中除了要加@ConfigurationProperties还要加上@Component才能把配置信息注入IOC容器中。
可参考:关于@EnableConfigurationProperties 注解
标签:实体类,validationQuery,String,dataSourceProperties,spring,boot,ConfigurationPropert 来源: https://www.cnblogs.com/liaowenhui/p/11203296.html