Configuration config = new DatabaseConfiguration(dataSource, "app_config", "name", "value");
Using DatabaseConfiguration of Commons Configuration
TweetPosted on Sunday Feb 22, 2015 at 10:50PM in Technology
Commons Configuration is a very useful library which manages configurations of an application. it supported various data stores including RDBMS. I’ve done some test against RDBMS so leave this posting as a note. test was done against Commons Configuration 1.10. the project which used in test is can be obtained from my GitHub repository.
app_config Table
Assume now we have following data in a table named app_config
.
name | value |
---|---|
anyJob.someProp1 |
abc |
anyJob.someProp2 |
def |
someJob.list |
1,2,3,4,5 |
someJob.someProp |
${anyJob.someProp1} |
Create Configuration instance
First, we need to create a DatabaseConfiguration
instance with following procedure:
Obtain all of configuration
We can obtain all of configurations as follows:
// Obtain all of keys for (Iterator<String> keys = config.getKeys(); keys.hasNext(); ) { String key = keys.next(); Object value = config.getProperty(key); System.out.println(key + "=" + value); }
It produces:
anyJob.someProp1=abc anyJob.someProp2=gef someJob.list=[1, 2, 3, 4, 5] someJob.someProp=${anyJob.someProp1}
Obtain keys with particular prefix
Sometimes we’d like to filter using prefixes. this time we get keys prefixed with someJob
.
// Obtain keys with particular prefix for (Iterator<String> keys = config.getKeys("someJob"); keys.hasNext(); ) { String key = keys.next(); Object value = config.getProperty(key); System.out.println(key + "=" + value); }
It produces:
someJob.list=[1, 2, 3, 4, 5] someJob.someProp=${anyJob.someProp1}
Obtain list
We can obtain comma-separated values as List
as follows:
// Obtain list System.out.println(config.getList("someJob.list")); // [1, 2, 3, 4, 5] System.out.println(config.getString("someJob.list")); // 1
It produces:
[1, 2, 3, 4, 5] 1
Note that invocation of getString()
returns only the first value.
Obtain referencing value
The value ${anyJob.someProp1}
in the key someJob.someProp
resolved as abc
with getString()
method as follows:
// Referencing a value of other key System.out.println(config.getString("someJob.someProp")); // abc
It produces:
abc
Update
The library reflects a update of database immediately even after instantiation of DatabaseConfiguration
. consider following procedure was executed after instantiation of the configuration instance.
// update value of a row try (Connection cn = dataSource.getConnection()) { try (Statement st = cn.createStatement()) { st.executeUpdate("update app_config set value='hij' where name='anyJob.someProp1'"); } } // check updated value System.out.println(config.getString("anyJob.someProp1")); // hij System.out.println(config.getString("someJob.someProp")); // hij
It produces:
hij hij
Tags: commons