java - 在 Spring 中将属性文件中的所有键和值作为 Map 注入(inject)

标签 java spring

有人可以提供一些想法,从属性文件中注入(inject)所有动态键和值,并将其作为 Map 传递给 DBConstants 类,使用 Setter Injection with Collection。

key 是事先不知道的,可能会有所不同。

// Example Property File that stores all db related details
// db.properties

db.username.admin=root
db.password.admin=password12
db.username.user=admin
db.password.user=password13

DBConstants 包含需要注入(inject)所有键和值的映射 dbConstants。

请提供 bean 定义以将所有键和值注入(inject) Map dbConstants。

public class DBConstants {

    private Map<String,String> dbConstants;

    public Map<String, String> getDbConstants() {
        return dbConstants;
    }

    public void setDbConstants(Map<String, String> dbConstants) {
        this.dbConstants = dbConstants;
    }
}

最佳答案

您可以使用您的属性文件创建 PropertiesFactoryBean,然后在您希望将其用作 map 的位置注入(inject) @Resource 注释。

@Bean(name = "myProperties")
public static PropertiesFactoryBean mapper() {
    PropertiesFactoryBean bean = new PropertiesFactoryBean();
    bean.setLocation(new ClassPathResource("prop_file_name.properties"));
    return bean;
}

用法:

@Resource(name = "myProperties")
private Map<String, String> myProperties;

关于java - 在 Spring 中将属性文件中的所有键和值作为 Map 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42179664/

相关文章:

java - 使用 Spring Boot 缓存用户详细信息

java.net.UnknownHostException : Test: Test: unknown error Failed to get local InetAddress for VMID

java - 在 Spring 应用程序中为 Tomcat mysql 连接池动态选择目录

java - 在 PHP 中实现此 Java 密码加密算法

java - 如何使用 Spring Security 允许所有请求?

java - SWFUpload和Java : Session is lost

java - JPA EntityManager 在 @Transactional 方法之后阻塞

java - SmartGWT:是否可以为列表网格中的特定行着色?

java - Spring Boot Rest Web服务在Get Request中获取多个参数

java - 如何为 Oracle SQL Developer 加载 JDBC 驱动程序