首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

一步一步晋级spring配置4:使用SPEL和Util标签配置spring xml参数

2012-07-04 
一步一步升级spring配置4:使用SPEL和Util标签配置spring xml参数?1.原始做法: spring xml配置文件,参数直

一步一步升级spring配置4:使用SPEL和Util标签配置spring xml参数

?

1.原始做法: spring xml配置文件,参数直接混合配置

如下

?

缺点: 参数和bean混在一起,不利于查找编辑发布

?

2.稍微改进,使用 context:property-placeholder

?

新建? dataSource.properties

?

?

缺点:这个问题困扰我很久,

就是,如果我有的bean 不需要外部参数配置,就想使用 ${} 这样的符号

?

比如

?

?

在 stackoverflow上面,国外的朋友给我解答,虽然我的英文很烂,但是外国人看懂了,开心 http://stackoverflow.com/questions/10257448/contextproperty-placeholder-is-a-good-thing-but-i-do-not-want-some-bean-config

?

解决方案:

1).context:property-placeholder 使用 placeholderPrefix和 placeholderSuffix属性

以前不知道这个属性,长见识了,这个方案不错,如果你的spring是3.0以下的话,使用这个


2).不使用外部参数,但要用$符号的bean,可以使用SPEL 转义 #{'$'}num}

这个方案可以解决问题,但是比较坑爹,我有很多这样的sql,都需要人工转义,太麻烦,抛弃

?

3.使用SPEL和Util标签配置spring xml参数

SPEL 是spring 3.0新的特性

?

<util:properties id="p_dataSource" location="classpath:config/dataSource.properties"></util:properties>

?

<!--dataSource -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName" value="#{p_dataSource['dataSource.driverClassName']}" />

<property name="url" value="#{p_dataSource['dataSource.url']}" />

<property name="username" value="#{p_dataSource['dataSource.username']}" />

<property name="password" value="#{p_dataSource['dataSource.password']}" />

<property name="maxActive" value="#{p_dataSource['dataSource.maxActive']}" />

<property name="maxIdle" value="#{p_dataSource['dataSource.maxIdle']}" />

<property name="maxWait" value="#{p_dataSource['dataSource.maxWait']}" />

</bean>

?

注意:不能 配置成 #{p_dataSource.dataSource.maxIdle},读不到这个属性,需要用 [] 方括号括起来

热点排行