Spring加载properties文件的两种方式

Spring加载properties文件有两种方式,一种是通过xml的方式,另外一种是通过注解直接注入的方式。

方式一:通过xml配置的方式

首先,创建一个 jdbc.properties 文件,内容如下:

user=root
password=123456
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver

然后在xml配置文件中导入这个配置文件。
在xml中也有两种方式引入外部properties文件
第一种是:通过 context:property-placeholder 标签引入,location的值是配置文件的地址

<context:property-placeholder location=“classpath:jdbc.properties”/>

第二种是:配置 PropertyPlaceholderConfigurer 这个类的bean实例

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 	<property name="locations"> <!-- PropertyPlaceholderConfigurer类中有个locations属性,接收的是一个数组,我们可以在下面配好多个properties文件 -->
 		<array>
 			<value>classpath:jdbc.properties</value>
 		</array>
 	</property>
 </bean>

配置完成之后,我们就可以通过 ${key} 获取配置文件中对应key的值

   <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${user}"/>
        <property name="password" value="${password}"/>
        <property name="jdbcUrl" value="${url}"/>
        <property name="driverClass" value="${driverClass}"/>
    </bean>

方式二:通过注解的方式注入

通过注解的方式,首先需要在xml配置文件中,配置 PropertiesFactoryBean 这个类的实例,他的参数与方式一种的配置是一样的。

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

配置完这个后就可以通过 @Value注解将配置文件中对应的值注入到指定的属性中。

@Component
public class Bird {
    private String name;

    @Value("#{prop.password}") // prop 是xml中配置PropertiesFactoryBean的bean的id
    public void setName(String name) {
        System.out.println(name + "正在注入中。。。。。。");
        this.name = name;
    }
  }

测试一下,结果如下
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值