例如要注入下列参数:

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<DataSource> 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<DataSource> getDatasources() {
return datasources;
} public void setDatasources(List<DataSource> datasources) {
this.datasources = datasources;
}
}

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

Spring Boot中注入配置文件application.properties中的list 对象参数的更多相关文章

  1. Spring boot 梳理 - 全局配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下。

    全局配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下.

  2. spring boot项目下的application.properties中的logging.level设置日志级别

    日志级别 trace<debug<info<warn<error<fatal 默认级别为info,即默认打印info及其以上级别的日志,如下: logging.level ...

  3. IntellJ IDEA 对于 Spring Boot2.0.2 配置文件application.properties 配置

    1.指定文件名称: 打开IDEA编辑位置: 找到如图位置: 点开后方设置 设置输入如下内容:(默认的配置文件名字可以使用--spring.config.name来指定,只需要指定文件的名字,文件扩展名 ...

  4. Java代码中获取配置文件(config.properties)中内容的两种方法

    方法千千万,本人暂时只总结了两种方法. (1)config.properties中的内容如图 在applicationContext.xml中配置 <!-- 引入配置文件 --> < ...

  5. SpringBoot中resources配置文件application.properties

    #项目名server.servlet.context-path=/springboot-day1#端口号server.port=8989 #datasource数据库连接信息#urlspring.da ...

  6. Spring Boot加载配置文件

    问题1:Spring如何加载配置,配置文件位置? 1.默认位置: Spring Boot默认的配置文件名称为application.properties,SpringApplication将从以下位置 ...

  7. Spring Boot 2 读取配置文件

    开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目. 一.默认配置文件 Spring Boot会读取名称a ...

  8. spring boot mybatis XML文件读取properties配置信息

    配置文件application.properties中相关配置信息可以在部署以后修改,引用配置信息可以在代码和mybatis的映射文件中 1.JAVA代码 可以通过变量去读取 application. ...

  9. Spring Boot 中配置文件application.properties使用

    一.配置文档配置项的调用(application.properties可放在resources,或者resources下的config文件夹里) package com.my.study.contro ...

随机推荐

  1. 启动及更改tomcat 配置

    到tomcat安装的bin目录下面,双击那个startup.bat文件,启动Tomcat 去浏览器输入 http://localhost:8080/  然后出现下面的界面,那就说明你的tomcat配置 ...

  2. VirtualBox修改现有VDI虚拟磁盘大小

    之前创建的虚拟磁盘10G,现需要更大的空间,而又不想使用新增虚拟磁盘的方法. 通过查看资料发现VirtulBox提供的VBoxManage modifyhd命令可以解决,该命令的具体用法: VBoxM ...

  3. mac 下 IntelliJ IDEA 快捷键

    编辑器 Cmd + N // 代码生成,getter, setter Opt + Enter // 导入类或者注解

  4. 27.给input边框和背景颜色设置全透明

    给input边框和背景颜色设置全透明,但是里面的字不会消失 1.让背景颜色变透明(二选一) background-color:rgba(0,0,0,0); background:rgba(0,0,0, ...

  5. laravel学习历程

    1.www目录下拉下来一个laravel框架 composer create-project laravel/laravel laravelapp --prefer-dist laravelapp 为 ...

  6. Spring.之.报错:Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException

    Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWo ...

  7. hbase-java-api003(put list)

    package api; import java.io.IOException; import java.util.ArrayList; import java.util.List; import o ...

  8. uvm设计分析——tlm

    tlm模块,用来在不同模块之间实现实时通信,主要基于两个定义在通信双方的port类来实现. 两个port之间,通过connect函数,来拿到双方的class指针,进而调用对方的function. 但是 ...

  9. 强化学习---TRPO/DPPO/PPO/PPO2

    时间线: OpenAI 发表的 Trust Region Policy Optimization, Google DeepMind 看过 OpenAI 关于 TRPO后, 2017年7月7号,抢在 O ...

  10. [转]js刷新父窗体

    浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法   <script language=JavaScript>       parent.location.reload(); ...