spring 引用bean的属性值

有些应用由于需求,将配置信息放在数据库中,这样可以方便管理,同时也可以通过系统的管理界面动态的维护系统。基于这样的需求,引用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

猜你喜欢

转载自xieyan30.iteye.com/blog/1831660