有些应用由于需求,将配置信息放在数据库中,这样可以方便管理,同时也可以通过系统的管理界面动态的维护系统。基于这样的需求,引用bean的属性是一个很好的解决方案。
1,首先我们建立一个从db取得系统参数的类,这里只给了一个模拟。
package spring3.useBeanProp; public class SystemConfigFromDB { private int sessionTimeOut; private int maxPageNum; public void init() { // 假设下面的值从db获取的 setSessionTimeOut(30); setMaxPageNum(10); } public int getSessionTimeOut() { return sessionTimeOut; } public void setSessionTimeOut(int sessionTimeOut) { this.sessionTimeOut = sessionTimeOut; } public int getMaxPageNum() { return maxPageNum; } public void setMaxPageNum(int maxPageNum) { this.maxPageNum = maxPageNum; } }
2,建立应用工程的系统信息管理类,这类中可能一部分是从DB取得,一部分可能是定数等等
package spring3.useBeanProp; public class ApplicationManager { private int sessionTimeOut; private int maxPageNum; private int sysInfo1; private int sysInfo2; public int getSessionTimeOut() { return sessionTimeOut; } public void setSessionTimeOut(int sessionTimeOut) { this.sessionTimeOut = sessionTimeOut; } public int getMaxPageNum() { return maxPageNum; } public void setMaxPageNum(int maxPageNum) { this.maxPageNum = maxPageNum; } public int getSysInfo1() { return sysInfo1; } public void setSysInfo1(int sysInfo1) { this.sysInfo1 = sysInfo1; } public int getSysInfo2() { return sysInfo2; } public void setSysInfo2(int sysInfo2) { this.sysInfo2 = sysInfo2; } }
3,配置XML(注意,红色的标示)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="systemConfigFromDB" class="spring3.useBeanProp.SystemConfigFromDB" init-method="init"/> <bean id="applicationManager" class="spring3.useBeanProp.ApplicationManager" p:sessionTimeOut="#{systemConfigFromDB.sessionTimeOut}" p:maxPageNum="#{systemConfigFromDB.maxPageNum}"/> </beans>
4,测试
package spring3.useBeanProp; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext app = new ClassPathXmlApplicationContext( "spring3/useBeanProp/useBeanProp.xml"); ApplicationManager manager = (ApplicationManager) app .getBean("applicationManager"); System.out.println(manager.getMaxPageNum()); System.out.println(manager.getSessionTimeOut()); } }
测试结果:
10 30