Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Inject all keys and Values from property file as Map in Spring

Tags:

java

spring

Can someone provide some idea to inject all dynamic keys and values from property file and pass it as Map to DBConstants class using Setter Injection with Collection.

Keys are not known in advance and can vary.

// 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 contains map dbConstants for which all keys and values need to be injected.

Please provide bean definition to inject all keys and values to 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;
    }
}
like image 845
Alex_Java Avatar asked Jan 16 '26 21:01

Alex_Java


2 Answers

You can create PropertiesFactoryBean with your properties file and then inject it with @Resource annotation where you want to use it as a map.

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

Usage:

@Resource(name = "myProperties")
private Map<String, String> myProperties;
like image 176
Monzurul Shimul Avatar answered Jan 19 '26 13:01

Monzurul Shimul


you can use @Value.

Properties file:

dbConstants={key1:'value1',key2:'value2'}

Java code:

@Value("#{${dbConstants}}")
private Map<String,String> dbConstants;
like image 21
Marcos Nunes Avatar answered Jan 19 '26 11:01

Marcos Nunes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!