Spring Spel 与 Placeholder

本文探讨Spring框架中Placeholder的使用,以及Spring 3引入的SpEL的强大功能,包括从jndi url resource读取配置文件。SpEL允许进行更复杂的计算,提供灵活的表达式语言用于属性注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近忙公司系统的Java版本升级,blog写的不如以前勤快了。今天说说Spring配置文件中的变量。
相信用过spring的都知道Placeholder是怎么回事,是用来读取bean中的Property的。比如:

<!-- 定义property placeholder -->
 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean> 
    <bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <!-- 通过$获取property的值 -->
        <property name="driverClassName" value="${project.jdbc.driverClassName}" />
        <property name="url" value="${project.jdbc.url}" />
        <property name="username" value="${project.jdbc.username}" />
        <property name="password" value="${project.jdbc.password}" />

而spring3引入的SPEL,使用起来更加强大,可以进行更为复杂的计算。我们常用的使用方式是通过jndi url resource来读取文件夹中的配置文件(Properties或者log4j文件)。比如:

<jee:jndi-lookup id="configUrlResource"
   jndi-name="java:comp/env/CONFIG_URL"
   expected-type="java.net.URL" />
<bean id="configUrl" class="org.springframework.core.io">
    <property name="url" ref="configUrlResource" />
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    <property name="locations">  
       <list>  
           <!--通过#来获取configUrl的具体值,并读取文件夹内的properties -->
          <value>#{configUrl + '/ldap.properties'}</value>
                    <value>#{configUrl + '/config.properties'}</value>
        </list>  
    </property>  
</bean>
<!--其他使用方式举例,通过configUrl的get方法获取其他类型-->
#{configUrl.URI.toExternalForm()}

spel功能非常强大,可以参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值