Property文档
Property简介
简而言之,PropertySet就是一个存储key-value对的模块,他能将key-value通过XML、EJB、Ofbiz、JDBC、JDO等进行存储,也可以自己实现AbstractPropertySet从而自定义更多的存储形式。PropertySet最典型的适用存储数据是配置信息、用户首选项等。在项目中,如果一些可以转化为key-value的信息在一开始无法确定存储位置,或者想可以灵活改变存储位置,那就可以考虑使用PropertySet。
PropertySet的优点是:1.轻量级;2.灵活;3.易用;4.适用于J2SE和J2EE平台。
PropertySet的配置
Property默认提供的存取方式有:aggregate、cached、jdbc、ejb、javabeans、map、memory、serializable、serializable、ofbiz、hibernate、ojb、xml。
配置文件的放置位置为:
1.propertyset.xml
2./propertyset.xml
3.META-INF/propertyset.xml
4./META-INF/propertyset.xml
5.META-INF/propertyset-default.xml
6./META-INF/propertyset-default.xml
PropertySet会按以上顺序挨个寻找,第一个被找到的即作为配置文件。由于propertyset的jar中自带propertyset-default.xml,因此多数情况下无需配置即可使用(JDBC或Hibernate情况下,需要指定JNDI等信息,不可缺省)。
关于配置文件的书写,可以参考默认配置文件,默认配置文件内容是:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.HashMap; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.module.propertyset.PropertySetManager; import com.opensymphony.module.propertyset.xml.XMLPropertySet; public class PropertySetDemo { public static void main(String[] args) throws Exception { PropertySetDemo demo = new PropertySetDemo(); demo.mapPsDemo(); demo.memoryPsDemo(); demo.xmlPsDemo(); } public void memoryPsDemo() { System.out.println(StringUtils.center("Memory PropertySet Demo", 80, '*')); //memory是配置文件中定义的:<propertyset name="memory" class="com.opensymphony.module.propertyset.memory.MemoryPropertySet"/> PropertySet ps = PropertySetManager.getInstance("memory", null); ps.setBoolean("BooleanPS", true); ps.setString("name", "Tom"); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(StringUtils.repeat("*", 80)); } public void mapPsDemo() { System.out.println(StringUtils.center("Map PropertySet Demo", 80, '*')); @SuppressWarnings("unchecked") HashMap map = new HashMap(); //memory是配置文件中定义的:<propertyset name="memory" class="com.opensymphony.module.propertyset.memory.MemoryPropertySet"/> PropertySet ps = PropertySetManager.getInstance("map", map); ps.setBoolean("BooleanPS", true); ps.setString("name", "Tom"); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(StringUtils.repeat("*", 80)); } public void xmlPsDemo() throws Exception { System.out.println(StringUtils.center("XML PropertySet Demo", 80, '*')); PropertySet ps = PropertySetManager.getInstance("xml", null); InputStream is = new FileInputStream("config.xml"); ((XMLPropertySet) ps).load(is); IOUtils.closeQuietly(is); System.out.println(ps.getBoolean("aa")); System.out.println(ps.getInt("ab")); System.out.println(ps.getLong("ac")); System.out.println(ps.getDouble("ad")); System.out.println(ps.getString("ae")); System.out.println(ps.getText("af").trim()); System.out.println(ps.getDate("ag")); System.out.println(ps.getProperties("ai")); ps.setBoolean("aa", false); ((XMLPropertySet) ps).save(new FileOutputStream("config.xml")); System.out.println(StringUtils.repeat("*", 80)); } }