引入外部属性文件[XML方式]

引入外部属性文件(XML方式)

这里我们就以配置德鲁伊数据库连接池为例进行讲解说明

1. 创建外部属性文件(.properties结尾的文件): jdbc.properties
p.username=root
p.password=mysql
p.url=jdbc:mysql://localhost:3306/mybatisdb?serverTimezone=Asia/Shanghai
p.driverClass=com.mysql.cj.jdbc.Driver
  • 注意: 我们编写属性文件的时候最好是使用两级key值, 否则可能会引起一些问题
2. 在Spring.xml文件中添加context名称空间
  • 因为我们要使用context名称空间之下的property-placeholder标签来完成引入外部的属性文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WIxjkEZh-1677140259279)(E:\非凡英才\Spring框架\图解\添加context名称空间.png)]

3. 在spring.xml文件中使用context名称空间之下的property-placeholder标签来完成对外部属性文件的引入
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
  • location属性就是用来定位到外部属性文件的位置:
  • classpath指向的位置如果是在开发时期就是 : java目录和resources目录之下, 如果是在生产环境中(也就是打包之后)就是: WEB-INFO目录之下的classes文件夹
    • 在打包成war包部署的时候开发期间的java目录之下的内容和resources目录之下的内容都会被放到WEB-INFO目录之下的classes目录中
  • classpath 与 classpath* 的区别:
    • classpath只会到你的class路径中查找文件
    • classpath不仅包含自己项目中的class路径, 还包括项目中jar文件中的class路径
  • classpath后面的值可以是类似正则表达式的(注意 : 是类似正则表达式, 但其实并不正则表达式)
    • classpath的值开头加一个*就表示前缀, 前缀任意, 比如 *.properties就表示匹配所有后缀为.properties的文件
4.配置数据源(使用德鲁伊数据库连接池作为实现):
<bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value = "${p.driverClass}"></property>
    <property name="url" value="${p.url}"></property>
    <property name="username" value = "${p.username}"></property>
    <property name="password" value = "${p.password}"></property>
</bean>
  • 在我们使用context名称空间之下的property-placeholder标签完成了对外部属性文件的引入之后我们就可以使用${键}的方式来获取属性文件中对应键的值
  • 数据库连接池并不是一个数据库中的概念, 而是一种设计模式, 是"池"的设计模式
  • Java数据源其实就是指javax.sql.DataSource接口, 对应着一个数据库中的数据源 , 具体可以有不同的实现类, 这是一个SPI接口, 所以是由不同的数据库厂商提供不同的实现类也就是不同的数据源
5.编写测试方法进行测试
@Test
public void test4() throws SQLException {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

    //创建数据源对象
    DataSource dataSource = applicationContext.getBean("dataSource",DataSource.class);

    try {
        System.out.println(dataSource.getConnection());
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
  • 这里的测试目的: 如果能正常使用该数据源获取到数据库链接对象, 那么就说明是没有问题的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值