spring基于xml加载和读取properties配置文件的方式

本文介绍了Spring框架中通过XML加载和读取properties配置文件的两种常见方法,包括使用特定标签和注解到bean属性的方式。强调在properties文件中定义变量名的注意事项,并指出第三种较不推荐的配置方式。在Java类内部,可以使用@value注解获取配置值。文章鼓励读者指正和补充。

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

先声明,写到properties配置文件的变量名最好具有特殊性

新建test.properties配置文件,内容如下

com.name=wx5f559450f4170318

一种是使用spring提供的一个标签,可以简单配置,如下

<context:property-placeholder location="classpath:test.properties"/>

配置多个properties通过分号隔开在后面添加即可,例如

<context:property-placeholder location="classpath:test.properties,classpath:jdbc.properties"/>

另一种是通过注到bean的属性来进行配置,这里也是配置多个,如下

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
                <value>classpath:test.properties</value>
            </list>
        </property>
</bean> 

这两种配置,在java类里面获取properties文件里面的值,都是可以通过注解@value(${key})来获取的

@Value("${com.name}")
    private String name;

除此之外,还有一种方式,和上面的第二种非常相似;不过这里不推荐使用,一般使用上面的两种即可。

<bean id="prop" class="org.springframework.beans.factory.config.PropertiesFactoryBean">  
        <property name="locations">
            <list>  
                <value>classpath:jdbc.properties</value>  
                <value>classpath:test.properties</value>  
            </list>  
        </property>  
</bean> 

通过这种配置方式,必须指定bean的id名称,否则取不到值。
要通过@value(“#{beanName.key}”)来获取值,但这种配置方式不能获取xxx.xxx的值,也就是说

@Value("#{prop.com.name}")
    private String name;

这是获取不到值的。
把properties文件改成

com_Name=wx5f559450f4170318

这样就能获取值了

    @Value("#{prop.com_Name}")
    private String name;

后来,我发现在第三种配置方式的基础上,再加上下面的配置

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="properties" ref="prop"/>
</bean>

就能同样地通过注解@value(${key})来获取值,这样配置未免太累赘了,所以还是推荐使用前面两种。


以上是个人总结出来的,有遗漏或者不对的地方可以评论指出来,我再加以修正,谢谢你的阅读!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值