Druid如何平行替換為Hikari
Druid平行替換為Hikari
由于druid本身的漏洞,具體見我的上一篇文章druid漏洞,決定替換為hikari。
步驟一
將pom文件中引用的druid依賴刪除,我引用的是
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>步驟二
修改yml文件。
由于我用的是讀寫分離,所以yml文件寫成下邊的形式。
datasource:
x-wr:
driver-class-name: com.mysql.jdbc.Driver
name: mysql
type: com.zaxxer.hikari.HikariDataSource
jdbc-url: jdbc:mysql://
username: x_rw
password: 11111
hikari:
# 最小空閑連接數(shù)量
minimum-idle: 10
# 連接池最大連接數(shù),默認是10
maximum-pool-size: 20
# 空閑連接存活最大時間,默認600000(10分鐘)
idle-timeout: 5000000
# 此屬性控制池中連接的最長生命周期,值0表示無限生命周期,默認1800000即30分鐘
max-lifetime: 540000
# 數(shù)據(jù)庫連接超時時間,默認30秒,即30000
connection-timeout: 60000
connection-test-query: SELECT 1
#此屬性控制從池返回的連接的默認自動提交行為,默認值:true
auto-commit: true
x-ro:
driver-class-name: com.mysql.jdbc.Driver
name: mysql
type: com.zaxxer.hikari.HikariDataSource
jdbc-url: jdbc:mysql://
username: x_ro
password: 000000
hikari:
# 最小空閑連接數(shù)量
minimum-idle: 10
# 連接池最大連接數(shù),默認是10
maximum-pool-size: 20
# 空閑連接存活最大時間,默認600000(10分鐘)
idle-timeout: 5000000
# 此屬性控制池中連接的最長生命周期,值0表示無限生命周期,默認1800000即30分鐘
max-lifetime: 540000
# 數(shù)據(jù)庫連接超時時間,默認30秒,即30000
connection-timeout: 60000
connection-test-query: SELECT 1
#此屬性控制從池返回的連接的默認自動提交行為,默認值:true
auto-commit: true注意幾個地方,首先druid的配置文件是driverClassName,這里是driver-class-name,同時數(shù)據(jù)庫url在druid中是url,不管是不是多個數(shù)據(jù)源,但是在hikari中,如果是單個數(shù)據(jù)源則是url,多個數(shù)據(jù)源則要寫成jdbc-url。
另外就是數(shù)據(jù)庫連接,用戶名和密碼放的位置不太一樣。。
步驟三
由于我是讀寫兩個賬號,在代碼中是通過注解配置的方式實現(xiàn)不同數(shù)據(jù)源切換的,所以還需要改一下配置文件。
@Configuration
@MapperScan(basePackages = "com.dao", sqlSessionFactoryRef = DataSourceConfig.SQL_SESSION_FACTORY_NAME)
public class DataSourceConfig {
public static final String SQL_SESSION_FACTORY_NAME = "xxxFactory";
@Bean
@ConfigurationProperties("spring.datasource.x-wr")
public DataSource dataSourcexMysqlRw() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.x-ro")
public DataSource dataSourcexMysqlRo() {
return DataSourceBuilder.create().build();
}
@Bean
@Primary
public AbstractRoutingDataSource dataSource() {
Map<Object, Object> targetDataSources = new HashMap<>(2);
targetDataSources.put(DataSourceConstant.mysql_x_rw, dataSourcexMysqlRw());
targetDataSources.put(DataSourceConstant.mysql_x_ro, dataSourcexMysqlRo());
return new DynamicDataSource(dataSourcexMysqlRw(), targetDataSources);
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean(name = DataSourceConfig.SQL_SESSION_FACTORY_NAME)
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
Objects.requireNonNull(sqlSessionFactoryBean.getObject()).getConfiguration().setMapUnderscoreToCamelCase(true);
return sqlSessionFactoryBean.getObject();
}
}前兩個bean之前是這么寫的
@Bean
@ConfigurationProperties("spring.datasource.x-wr.druid")
public DataSource dataSourcexMysqlRw() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.x-ro.druid")
public DataSource dataSourcexMysqlRo() {
return DruidDataSourceBuilder.create().build();
}注意區(qū)別。
這些地方改完之后,你其他的代碼是完全不需要動的,可以完美替換,druid的監(jiān)控頁面自然就打不開了。。。就沒有安全漏洞了,性能上其實hikari比druid也要好不少。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決SpringBoot集成Eureka導(dǎo)致返回結(jié)果由json變?yōu)閤ml的問題
這篇文章主要介紹了解決SpringBoot集成Eureka導(dǎo)致返回結(jié)果由json變?yōu)閤ml的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot實現(xiàn)MD5加鹽算法的示例代碼
加鹽算法是一種用于增強密碼安全性的技術(shù),本文主要介紹了SpringBoot實現(xiàn)MD5加鹽算法的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
Spring內(nèi)置定時任務(wù)調(diào)度@Scheduled使用詳解
這篇文章主要介紹了Spring內(nèi)置定時任務(wù)調(diào)度@Scheduled使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12
Java使用TCP實現(xiàn)數(shù)據(jù)傳輸實例詳解
這篇文章主要介紹了Java使用TCP實現(xiàn)數(shù)據(jù)傳輸實例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
詳解SpringBoot Mybatis如何對接多數(shù)據(jù)源
這篇文章主要為大家介紹了SpringBoot Mybatis如何對接多數(shù)據(jù)源實現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
Java案例使用比較排序器comparator實現(xiàn)成績排序
這篇文章主要介紹了Java案例使用比較排序器comparator實現(xiàn)成績排序,主要通過案例用TreeSet集合存儲多個學(xué)生信息,并遍歷該集合,要按照總分從高到低進行排序,下文介紹需要的朋友可以參考一下2022-04-04

