Spring配置Bean时使用外部属性文件(比如配置数据库源)


引言:

Spring在配置某些Bean时可以使用外部的属性文件。使用外部化属性文件中的属性,在之后开发过程中便于修改,只需修改外部的属性文件即可。比如配置数据库时。

  • Main.java
  • beans-properties.xml
  • db.properties

需要在工程中添加如下的“.jar”包文件

Main.java

package com.yczlab.spring.beans.properties;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.sql.DataSource;
import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans-properties.xml");

        DataSource dataSource = (DataSource) context.getBean("dataSource");
        System.out.println(dataSource.getConnection());

        System.out.println("*********************");
        DataSource dataSource1 = (DataSource) context.getBean("dataSource1");
        System.out.println(dataSource1);

    }
}

beans-properties.xml(src/目录下)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 导入属性文件 -->
    <context:property-placeholder location="classpath:db.properties"/>

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!--传统方式配置,在之后开发过程中的修改很麻烦-->
        <property name="user" value="root"/><!--实际的数据库用户名-->
        <property name="password" value="123456"/><!--实际的数据库密码-->
        <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql:///spring_learning_test?serverTimezone=UTC"/><!--实际的数据库名-->
    </bean>

    <bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!--使用外部化属性文件的属性,在之后开发过程中便于修改,只需修改外部的属性文件即可-->
        <property name="user" value="${user}"/>
        <property name="password" value="${password}"/>
        <property name="driverClass" value="${driverClass}"/>
        <property name="jdbcUrl" value="${jdbcUrl}"/>
    </bean>

</beans>

db.properties(src/目录下)

# 实际的数据库用户名
user=root
# 实际的数据库密码
password=123456
driverClass=com.mysql.cj.jdbc.Driver
# 实际的数据库名
jdbcUrl=jdbc:mysql:///spring_learning_test?serverTimezone=UTC

文章作者: YangChongZhi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YangChongZhi !
评论
 上一篇
Spring中使用SpEL为Bean的属性动态赋值 Spring中使用SpEL为Bean的属性动态赋值
引言: 可以在Spring中使用SpEL语言为Bean的属性赋一个字面值,引用其他类的静态属性,引用其他的Bean,引用其他Bean的属性,还可以在SpEL中使用运算符。 Address.java Car.java Person.jav
2020-03-08
下一篇 
Bean的作用域(单例,原型) Bean的作用域(单例,原型)
引言: 使用bean的scope属性来配置bean的作用域 Car.java Main.java beans-scope.xml Car.javapackage com.yczlab.spring.beans.scope; publ
2020-03-07
  目录