Spring 在xml中引入properties文件方式和问题

本文主要是讲Spring 在xml中引入properties 文件方式和问题。当然还有直接在java类中使用@PropertySource注解来进行引入。

一、通过标签<context:property-placeholder >

1. 示例: 在spring.xml配置文件中添加标签
    <context:property-placeholder location="classpath:redis-key.properties"/>
2. 用法

(1)在xml文件中使用

   	<property name="url" value="${jdbc.url}" />
   	<property name="username" value="${jdbc.username}" />
   	<property name="password" value="${jdbc.password}" />

(2)在java文件中使用

    @Value("${jdbc_url}")  private String jdbcUrl; 
3. 注意

(1)属性说明

location:表示属性文件位置,多个之间通过如逗号/分号等分隔;
ignore-unresolvable:(多文件时使用)是否忽略解析不到的属性,如果不忽略,找不到将抛出异常 ,默认false

(2)引入多个properties文件问题

    会遇到如下错误:
    	nested exception is java.lang.IllegalArgumentException: 
    	Could not resolve placeholder 'key' in string value${key1}
    原因:
    	在加载第一个context:property-placeholder时会扫描所有的bean,而有的bean里面出现第二个
    context:property-placeholder引入的properties的占位符${key2},但此时还没有加载第二个property-placeholder,
    所以解析不了${key2}。
    解决:
    	方法一,可以将通过模块的多个property-placeholder合并为一个,将初始化放在一起。
    	<context:property-placeholder location="classpath:config.properties,classpath:jdbc.properties">
    	</context:property-placeholder>
    	方法二,添加ignore-unresolvable="true",这样在加载第一个property-placeholder时出现解析不了的占位符进行忽略掉。

二、通过标签<bean class="org.springframework.beans.factory.config.

PropertyPlaceholderConfigurer" >

1. 示例: 在spring.xml配置文件中添加标签
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:config.properties</value>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>
2. 用法

等价于 方式一,用法参考方式一。

三、通过标签< util:properties>

1. 示例: 在spring.xml配置文件中添加标签
    <util:properties id="propertyConfigurer"  local-override="true" location="classpath:jdbc.properties"/>
2. 用法

(1)在xml文件中使用

	<property name="url" value="${jdbc.url}" />
	<property name="username" value="#{propertyConfigurer['jdbc.username']}" />
	<property name="password" value="#{propertyConfigurer['jdbc.password']}" />

(2)在java文件中使用

    @Value(value="#{propertyConfigurer['jdbc.url']}") private String jdbcUrl; 

四、通过标签<bean class="org.springframework.beans.factory.config.

PropertiesFactoryBean" >

1. 示例: 在spring.xml配置文件中添加标签
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertiesFactoryBean">
         <property name="locations">
            <list>
                <value>classpath:config.properties</value>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>
2. 用法
在java文件中使用

    @Value(value="#{propertyConfigurer['jdbc.url']}") private String jdbcUrl; 
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SSM引入jdbc.properties文件通常是用来配置数据源的相关信息,包括数据库的连接地址、用户名、密码等。一般情况下,jdbc.properties文件应该在spring.xml文件进行配置。 在spring.xml文件,可以使用PropertyPlaceholderConfigurer来加载jdbc.properties文件,将配置信息注入到Bean,以便在应用程序使用。示例代码如下: ```xml <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> ``` 然后在配置数据源的Bean,可以使用${key}的方式来引用jdbc.properties文件的配置项。示例代码如下: ```xml <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> ``` 其,${jdbc.driverClassName}、${jdbc.url}、${jdbc.username}和${jdbc.password}就是jdbc.properties文件定义的配置项。 至于mybatis-config.xml文件,它是用来配置MyBatis框架的相关信息,包括插件、别名、类型处理器等。虽然在mybatis-config.xml文件也可以引用jdbc.properties文件的配置项,但是通常情况下,这些配置项的值并不会被MyBatis框架直接使用,而是交由数据源进行处理。因此,在SSM,我们通常将jdbc.properties文件的配置放在spring.xml文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值