Spring框架学习笔记-引用Bean的属性值

将应用系统的配置信息放在配置文件中并非总是最合适的。如果应用系统是以集群方式部署的,或者希望在运行期动态调整应用系统的某些属性,这时,将配置信息放在数据库中不但方便集中管理,而且可以通过应用系统的管理界面动态维护,有效增强应用系统的可维护性,方便管理。
在Spring3.0中,我们可以通过类似于#{beanName.benaProp}的方式方便地引用另一个Bean的值。

package com.baobaotao.beanprop;
public class SysConfig{
	private int sessionTimeout;
	private int maxTabPageNum;
	private DataSource dataSource;
	//模拟从数据库中获取配置值并设置相应的属性
	public void initFromDB(){
		this.sessionTimeout=30;
		this.maxTabPageNum=10;
	}
	public int getSessionTimeout(){
		return sessionTimeout;
	}
	public int getmaxTabPageNum{
		return getmaxTabPageNum;
	}
	public void setDataSource(DataSource dataSource){
		this.dataSource=dataSource;
	}
}
<context:property-placeholder
	location="classpath:com/baobaotao/placeholder/jdbc.properties"/>
<bean id="dataSource" class=org.apache.commons.dbcp.BasicDataSource
	destroy-method="close"
	p:driverClassName="${driverClassName}"
	p:url="${url}"
	p:username="${userName}"
	p:password="${password}"/>
<!--通过initFromDB方法从数据源中获取配置属性值-->
<bean id="sysConfig" class="com.baobaotao.beanprop.SysConfig"
	init-method="initFromDB"
	p.dataSource-ref="dataSource"/>
<!-- 引用Bean的属性值-->
<bean class="com.baobaotao.beanprop.ApplicationManager"
	p:maxTabPageNum="#{sysConfig.maxTabPageNum}"
	p:sessionTimeout="#{sysConfig.sessionTimeout}"/>

访问数据库获取配置属性的前提是连接到数据库之中,所以不管如何,我们还是得使用外部属性文件配置数据库的连接信息然后通过sysConfig的initFromDB()方法访问数据库,获取应用系统的配置信息,并将其保存在sysConfig的属性中。
其他需要访问应用系统配置信息的Bean即可通过#{sysConfig.propName}的表达式引用sysConfig的属性值了。
在基于注解和基于Java类配置的Bean中,可以通过@Value("#{beanName.propName}")的注解形式引用Bean的属性值:

package com.baobaotao.beanprop;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ApplicationManager{
	@Value("#{sysConfig.sessionTimeout}")
	private int sessionTimeout;
	@Value("#{sysConfig.maxTabPageNum}")
	private int maxTabPageNum;
	...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值