2013年1月9日 星期三

Integrate Apache Commons Configuration with Spring

要整合Apache Commons Configuration到Spring中很容易,直接用Commons Configuration API將org.apache.commons.configuration.Configuration物件設定到Spring,成為Spring managed bean就可以了。

原本有個Spring Modules可以直接將Commons Configuration整合成Spring Property Placeholder,但似乎已經被移除了。

以下是利用database做為configuration source的設定方式:
  1. 假設你已經設定好DataSource。
  2. 設定DatabaseConfiguration,記得先開好table。
  3. 代碼:
    import javax.sql.DataSource;
    import org.apache.commons.configuration.DatabaseConfiguration;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    @Configuration
    public class SpringGlm3CoreConfiguration {
        @Bean
        @Autowired
        public org.apache.commons.configuration.Configuration databaseConfiguration(DataSource dataSource) {
            return new DatabaseConfiguration(dataSource, "myconfigs", "key", "value");
        }
    }
  4. Inject Configuration bean到其它class中。
  5. 代碼:
    import org.apache.commons.configuration.Configuration;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;

    @Component
    public class Company {

        @Autowired
        private Configuration conf;

        public String getCompanyId() {
            return conf.getString("company-id");
        }
    }
之後若要抽換設定方式,用XML或是properties file都不會影響到其它程式。