随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 

一、引用外部属性文件

         当bean的配置信息逐渐增多时,查找和修改一些bean的配置信息就变得愈加困难。这时可以将一部分信息提取到bean配置文件的外部,以properties格式的属性文件保存起来,同时在bean的配置文件中引用properties属性文件中的内容,从而实现一部分属性值在发生变化时仅修改properties属性文件即可。这种技术多用于连接数据库的基本信息的配置。
 

二、直接配置

  1、添加依赖

复制代码
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
复制代码

 

  2、配置数据库信息

复制代码
    <!--
       数据库连接池作为单例是最好的;一个项目就一个连接池,连接池里面管理很多连接。连接是直接从连接池里拿
       可以让Spring帮我们创建连接池对象,(管理连接池)
    -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    </bean>
复制代码

 

 

  3、测试

复制代码
    @Test
    public void test1() throws SQLException {
        ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc4.xml");

        //按照类型获取组件,可以获取到这个类型下的所有实现类
        DataSource dataSource = ioc.getBean(DataSource.class);
        System.out.println("dataSource = " + dataSource);
        System.out.println(dataSource.getConnection());
    }
复制代码

 

 

三、创建 properties 属性文件(以数据库为例)

db.properties 配置文件

# key = value
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test
jdbc.username = root
jdbc.password = root

 

四、引用外部配置文件-方式一

  在配置文件中再配置一个 <bean>,然后用 ${} 方式获取 配置文件中的键值对信息

  代码示例:

复制代码
    <!-- 加载配置文件 -->
    <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location"  value="db.properties"></property>
    </bean>
    <!-- 获取配置文件信息-->
    <bean id="dataSource01" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="driverClass" value="${jdbc.driver}"></property>
    </bean>
复制代码

 

  测试代码:

复制代码
    @Test
    public void test2() throws SQLException {
        ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc4.xml");

        DataSource dataSource = ioc.getBean("dataSource01", DataSource.class);
        System.out.println("dataSource = " + dataSource);
        System.out.println(dataSource.getConnection());
    }
复制代码

 

 

五、引用外部配置文件-方式二

  (1)引入 context 名称空间

    

 

 

 

  (2)使用 <context> 引入配置文件

    <!-- 使用context加载配置文件 -->
    <!-- 指定properties属性文件的位置 -->
    <!-- classpath:xxx 表示属性文件位于类路径下 -->
    <context:property-placeholder location="db.properties"/>

 

  (3)获取配置文件的信息

复制代码
    <!-- 从properties属性文件中引入属性值 -->
    <!-- ${key} 胴体取出配置中某个key对应的值-->
    <bean id="dataSource02" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="driverClass" value="${jdbc.driver}"></property>
    </bean>
复制代码

 



注意:username 是Spring的 key 中的一个关键字;为了防止配置文件中与 spring关键字冲突。
 
posted on   格物致知_Tony  阅读(135)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示

目录导航