網(wǎng)站首頁 編程語言 正文
一、第三方資源配置管理
說明:以管理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
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-04-12 Python?設計模式行為型訪問者模式_python
- 2022-05-16 .Net?MVC將Controller數(shù)據(jù)傳遞到View_實用技巧
- 2022-02-12 redis 快捷啟動 注冊服務,jar包注冊成服務,開機啟動
- 2022-07-20 python鼠標繪圖附代碼_python
- 2021-11-28 深入講解Socket原理_C 語言
- 2022-04-27 Python基礎學習之認識線程_python
- 2022-06-15 GO語言字符串處理Strings包的函數(shù)使用示例講解_Golang
- 2022-08-23 C++簡明分析inline函數(shù)的使用_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支