The reason is
I can choose plain text property file or xml based property file. but, mostly better to use xml based property
I can use UTF-8 Encoding, so that I can type most of language characters.
I can set same key name to get list or array or collection so on. So, I can simply get it and run looping clause.
I can get property value based on hierarchy.
I wanted to use on Spring framework. I just set one Spring bean
※ it worked in Spring3, I guess it will work lower version of Spring as well.
<bean id="xmlConfig" class="org.apache.commons.configuration.XMLConfiguration"> <constructor-arg type="java.lang.String"> <value>commons-config.xml</value> </constructor-arg> </bean>
commons-config.xml file, you can change root element "configuration" as you like
<?xml version="1.0" encoding="ISO-8859-1" ?> <configuration> <countries> <country> <code>gbr</code> </country> <country> <code>ger</code> </country> <country> <code>ita</code> </country> <country> <code>aut</code> </country> <country> <code>che</code> </country> <country> <code>chfr</code> </country> <country> <code>swe</code> </country> <country> <code>esp</code> </country> </countries> </configuration>
Make a Spring controller and getStringArray from property
package monitor.controller; import java.util.List; import org.apache.commons.configuration.XMLConfiguration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class IndexController { private final Log logger = LogFactory.getLog(this.getClass()); @Autowired private XMLConfiguration config; @RequestMapping(value = { "/", "/index" }) public ModelAndView index() { ModelAndView mnv = new ModelAndView(); String[] countries = config.getStringArray("countries.country.code"); mnv.addObject("countries", countries); mnv.setViewName("index"); return mnv; } }
No comments:
Post a Comment