日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

bootspring第三方資源配置管理

作者:攢了一袋星辰 更新時間: 2024-07-15 編程語言

一、第三方資源配置管理

說明:以管理DataSource連接池對象為例講解第三方資源配置管理

1 管理DataSource連接池對象

問題導入

配置數(shù)據(jù)庫連接參數(shù)時,注入驅(qū)動類名是用driverClassName還是driver?

1.1 管理Druid連接池【重點】

數(shù)據(jù)庫準備

create database if not exists spring_db character set utf8;
use spring_db;
create table if not exists tbl_account(
    id int primary key auto_increment,
    name varchar(20),
    money double
);
insert into tbl_account values(null,'Tom',1000);
insert into tbl_account values(null,'Jerry',1000);

【第一步】添加Druid連接池依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

注意:除了添加以上兩個依賴之外,別忘了添加spring-context依賴。

【第二步】配置DruidDataSource連接池Bean對象

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean>

【第三步】在測試類中從IOC容器中獲取連接池對象并打印

public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
    }
}
1.2 管理c3p0連接池

查詢坐標 https://mvnrepository.com/

【第一步】添加c3p0連接池依賴

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>

【第二步】配置c3p0連接池Bean對象

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_db"/>
    <property name="user" value="root"/>
    <property name="password" value="root"/>
    <property name="maxPoolSize" value="1000"/>
</bean>

注意:同一個Spring容器中不能有兩個id="dataSource"的連接池。

【第三步】在測試類中從IOC容器中獲取連接池對象并打印

public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
    }
}

2 加載properties屬性文件【重點】

目的:將數(shù)據(jù)庫的連接參數(shù)抽取到一個單獨的文件中,與Spring配置文件解耦。

問題導入

問題1:如何解決使用EL表達式讀取屬性文件中的值結(jié)果讀取到了系統(tǒng)屬性問題?

問題2:加載properties文件寫法標準寫法該怎么寫?

2.1 基本用法

【第一步】編寫jdbc.properties屬性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

【第二步】在applicationContext.xml中開啟開啟context命名空間,加載jdbc.properties屬性文件

在這里插入圖片描述

小技巧:如果同學們覺得上述復制粘貼方式不好改或者容易改錯,其實idea是有提示功能的,注意不要選錯就行了。有些版本的idea沒有這個提示,那么就按照上面復制粘貼的方式改,改完之后可以做成live template模板,后期直接用。

在這里插入圖片描述

<context:property-placeholder location="jdbc.properties"/>

【第三步】在配置連接池Bean的地方使用EL表達式獲取jdbc.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>

配置完成之后,運行之前的獲取Druid連接池代碼,可以獲取到連接池對象就表示配置成功。

2.2 配置不加載系統(tǒng)屬性

問題

如果屬性文件中配置的不是jdbc.username,而是username=root666,那么使用${username}獲取到的不是root666,而是計算機的名稱。

原因

系統(tǒng)屬性的優(yōu)先級比我們屬性文件中的高,替換了我們的username=root666。

解決

解決1:換一個名稱,例如不叫username,叫jdbc.username。

解決2:使用system-properties-mode="NEVER"屬性表示不使用系統(tǒng)屬性。

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
2.3 加載properties文件寫法
  • 不加載系統(tǒng)屬性
<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  • 加載多個properties文件
<context:property-placeholder location="jdbc.properties,msg.properties"/>
  • 加載所有properties文件
<context:property-placeholder location="*.properties"/>
  • 加載properties文件**標準格式**
<context:property-placeholder location="classpath:*.properties"/>
  • 加載properties文件標準格式
<context:property-placeholder location="classpath*:*.properties"/>

原文鏈接:https://blog.csdn.net/xiugtt6141121/article/details/140364685

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新