博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot中注入配置文件application.properties中的list 对象参数
阅读量:7144 次
发布时间:2019-06-29

本文共 3697 字,大约阅读时间需要 12 分钟。

例如要注入下列参数:

dyn.spring.datasources[0].name=branchta

dyn.spring.datasources[0].driverClassName=oracle.jdbc.OracleDriver
dyn.spring.datasources[0].url=jdbc:oracle:thin:@IP:1521:ora11g
dyn.spring.datasources[0].username=scott
dyn.spring.datasources[0].password=tiger
dyn.spring.datasources[1].name=ta4
dyn.spring.datasources[1].driverClassName=oracle.jdbc.OracleDriver
dyn.spring.datasources[1].url=jdbc:oracle:thin:@IP:1521:ora11g
dyn.spring.datasources[1].username=hr
dyn.spring.datasources[1].password=hr

这样,通过结合RootBeanDefinition以及DefaultListableBeanFactory相关接口,就可以纯编程式动态创建bean,而无需修改xml或者配置bean,达到纯动态的目的。

但是网上的例子似乎都是注入string类型的list,经测试,只要将datasources包含的类型定义为public即可,如下:

package com.XX.XXX.datasource;import java.util.List;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.PropertySource;@ConfigurationProperties(prefix="dyn.spring")@PropertySource("classpath:jrescloud.properties")public class DynamicDataSourceConfig {        private List
datasources; public static class DataSource { private String name; private String driverClassName; private String url; private String username; private String password; private String maxActive; private String maxIdle; private String maxWait; private String validationQuery; private String defaultAutoCommit; private String connectionInitSqls; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getMaxActive() { return maxActive; } public void setMaxActive(String maxActive) { this.maxActive = maxActive; } public String getMaxIdle() { return maxIdle; } public void setMaxIdle(String maxIdle) { this.maxIdle = maxIdle; } public String getMaxWait() { return maxWait; } public void setMaxWait(String maxWait) { this.maxWait = maxWait; } public String getValidationQuery() { return validationQuery; } public void setValidationQuery(String validationQuery) { this.validationQuery = validationQuery; } public String getDefaultAutoCommit() { return defaultAutoCommit; } public void setDefaultAutoCommit(String defaultAutoCommit) { this.defaultAutoCommit = defaultAutoCommit; } public String getConnectionInitSqls() { return connectionInitSqls; } public void setConnectionInitSqls(String connectionInitSqls) { this.connectionInitSqls = connectionInitSqls; } } public List
getDatasources() { return datasources; } public void setDatasources(List
datasources) { this.datasources = datasources; }}

这样就可以注入了。。。。。:)

转载地址:http://aegrl.baihongyu.com/

你可能感兴趣的文章
原型链类原理
查看>>
我的订单
查看>>
2017文章总结
查看>>
C3踩坑2--css选择器
查看>>
分类算法之决策树(理论篇)
查看>>
LeanCloud + Ionic3 迅速重构应用
查看>>
vue-cli解析
查看>>
tweak
查看>>
SSM学习系列(三) Hello Spring MVC
查看>>
chrome扩展推荐:帮你留住每一次ctrl+c --- Clipboard History 2
查看>>
恶意软件盯上了加密货币,两家以色列公司受到攻击
查看>>
专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
查看>>
VS2017 15.4提供预览版,面向Windows 10秋季更新(FCU)
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
如何自动搞定全站图片的alt属性?
查看>>
配置一次,到处运行:将配置与运行时解耦
查看>>
突发热点事件下微博高可用注册中心vintage的设计\u0026实践
查看>>
用Elm语言降低失败的风险
查看>>
抓住热门话题一对一直播,如何在风浪四起的直播市场劈风斩浪? ...
查看>>
手把手教你用owncloud搭建属于自己的云盘
查看>>