SSM框架学习-加载properties文件

1. 创建新的命名空间

在这里插入图片描述


xmlns="http://www.springframework.org/schema/beans"
复制修改为 xmlns:context="http://www.springframework.org/schema/context"
再添加进去
表示开辟一个新的命名空间,叫做context

xsi:schemaLocation=中,将前面两个路径复制,将beans修改为context,并粘贴

xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
">

这样就可以使用一个全新的命名空间context

2. 加载properties文件

<!-- 1.开启context命名空间 -->
<!-- 2.使用context空间加载properties文件 -->
<context:property-placeholder location="jdbc.properties"/>
<!-- 3.使用属性占位符${}读取properties文件中的属性 -->
<bean class="com.alibaba.druid.pool.DruidDataSource">
	<property name="driverClassName" value="${jdbc.driver}"/>
	<property name="url" value="${jdbc.url}"/>
	<property name="username" value="${jdbc.username}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>

在这里插入图片描述

3. 一些问题

3.1 问题一
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <property name="name" value="${username}"/>
    </bean>

并且properties文件中

username=root666

我们这边打印一下输出

public class BookDaoImpl implements BookDao {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void save() {
        System.out.println("book dao save ..." + name);
    }
}
public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        bookDao.save();
    }
}

但是控制台的输出username并不是root666
原因是系统环境变量和该环境变量中username冲突了,而系统环境变量的优先级更高所以输出的不是我们要的username
所以在加载properties文件时加上一个属性system-properties-mode="NEVER"

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
3.2 问题二

当出现了多个配置文件时

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
<context:property-placeholder location="jdbc.properties,jdbc2.properties" system-properties-mode="NEVER"/>

但是这种加载方式并不是最理想的
选择使用下面这种

<!--classpath*:*.properties  :  设置加载当前工程类路径和当前工程所依赖的所有jar包中的所有properties文件-->
<context:property-placeholder location="classpath*:*.properties" system-properties-mode="NEVER"/>

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值