nutz mysql druid_SpringBoot+Druid+Nutz+Jasypt整合配置多数据源
一 . 引入依赖
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-jdbc
com.alibaba
druid-spring-boot-starter
1.1.21
org.nutz
nutz
1.r.62
org.projectlombok
lombok
1.18.0
org.jasypt
jasypt
1.9.3
compile
二. application.yml配置文件
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
main:
url: jdbc:mysql://127.0.0.1:3306/data_hn?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: +7kwXYHUt9V4btttYVr3MOr/71O/ZIL7
salt: gxmh
subo:
url: jdbc:mysql://127.0.0.1:3306/data_gs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: +7kwXYHUt9V4btttYVr3MOr/71O/ZIL7
salt: gxmh
initial-size: 5 # 初始化连接大小 默认0
max-active: 20 # 最大连接数 默认8
min-idle: 5 # 最小空闲连接数 默认0
# 监控页面的用户名密码及页面地址
stat-view-servlet:
login-username: admin
login-password: 123456
enabled: true
url-pattern: /druid/*
max-wait: 60000 # 获取连接等待超时的时间(毫秒) 默认:-1
query-timeout: 90 # 查询超时时间
validation-query: SELECT 1 FROM DUAL
test-on-borrow: false # 申请连接时检测连接可用性 默认:false
test-on-return: false # 归还连接检测 默认false
test-while-idle: true # 超时是否检测连接可用性
time-between-eviction-runs-millis: 60000 # 配置空闲多久检测需要配置的空闲连接(毫秒)
min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存时间 默认30分钟
filters: config,stat,wall,slf4j # 通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat;日志用的filter:log4j;防御sql注入的filter:wall
filter:
stat:
log-slow-sql: true # 慢SQL记录
slow-sql-millis: 2000
db-type: mysql
merge-sql: false # SQL合并 默认false
wall:
config: #是否允许delete和drop表语句
delete-allow: true
drop-table-allow: false
enabled: true
db-type: mysql
pool-prepared-statements: false # 是否缓存PreparedStatement. PSCache对支持游标的数据库性能提升巨大,比如说oracle.在mysql下建议关闭.
max-pool-prepared-statement-per-connection-size: 20 # 每个连接上的PSCache的大小
use-global-data-source-stat: true # 合并多个DataSource的监控数据
server:
port: 8181
三. 数据源配置类DataSourceConfig
import com.alibaba.druid.pool.DruidDataSource;
import com.example.demo.utils.JasyptUtils;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.NutDao;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import javax.sql.DataSource;
/**
* @program: demo
* @description: 数据源配置类
* @author: guoxu
* @create: 2019-12-19 14:56
*/
/**
* 1.当存在多个数据源时,最好加上@Primary注解,这样默认使用这个连接。
* 2.使用Qualifier注解说明使用某个连接。
*/
@Configuration
public class DataSourceConfig implements EnvironmentAware {
@Value("${spring.datasource.druid.main.salt}")
private String salt;
private Environment environment;
private DataSource defaultDataSource;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
//配置主数据源
@Primary
@Bean
public DataSource initDataSource(){
Binder binder = Binder.get(environment);
defaultDataSource = binder.bind("spring.datasource.druid.main", DruidDataSource.class).get();
String password = ((DruidDataSource) defaultDataSource).getPassword();
((DruidDataSource) defaultDataSource).setPassword(JasyptUtils.strEnDecrypt(password, salt, 1));
return defaultDataSource;
}
//配置从数据源
@Bean(name = "sds")
public DataSource initSDataSource(){
Binder binder = Binder.get(environment);
defaultDataSource = binder.bind("spring.datasource.druid.subo", DruidDataSource.class).get();
String password = ((DruidDataSource) defaultDataSource).getPassword();
((DruidDataSource) defaultDataSource).setPassword(JasyptUtils.strEnDecrypt(password, salt, 1));
return defaultDataSource;
}
//主数据源绑定Nutz
@Primary
@Bean
public Dao initNutzDao(DataSource dataSource){
return new NutDao(dataSource);
}
//从数据源绑定Nutz
@Bean(name = "sdao")
public Dao initSNutzDao(@Qualifier("sds") DataSource dataSource){
return new NutDao(dataSource);
}
}
四. Nutz使用
@Autowired
Dao dao;
@Autowired
@Qualifier("sdao")
Dao sdao;
五. Jasypt加密工具类
package com.example.demo.utils;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;
/**
* @program: gxww-frame-cloud
* @description: Jasypt加密解密工具类
* @author: guoxu
* @create: 2019-12-16 14:57
*/
public class JasyptUtils {
public static void main(String[] args) {
String encrypt = strEnDecrypt("7j41Gq3M!@#", "gxmh", 0);
System.out.println("encrypt:"+encrypt);
String decrypt = strEnDecrypt(encrypt, "gxmh", 1);
System.out.println("decrypt:"+decrypt);
}
/**
* @Description: 字符串加密解密
* @Param: [plainText, salt, type]
* salt 加密盐
* type 0 加密 1或其他为 解密
* @return: java.lang.String
* @Author: guoxu
* @Date: 2019/12/16
*/
public static String strEnDecrypt(String plainText, String salt,int type){
String resultStr = "";
//加密工具
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
//加密配置
EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
//加密方式,默认PBEWithMD5AndDES,可改PBEWithMD5AndTripleDES
config.setAlgorithm("PBEWithMD5AndDES");
//加密所需的salt(盐)
config.setPassword(salt);
//应用配置
encryptor.setConfig(config);
if (type == 0){
resultStr = encryptor.encrypt(plainText);
} else {
resultStr = encryptor.decrypt(plainText);
}
return resultStr;
}
}
六. 不加密数据库密码时的另一种数据源配置类
package com.example.demo.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.NutDao;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* @program: demo
* @description: 多数据源配置类
* @author: guoxu
* @create: 2019-12-19 14:56
*/
@Configuration
public class DataSourceConfig {
/**
* 当存在多个数据源时,最好加上@Primary注解,这样默认使用这个连接。
* 不需要使用Qualifier注解说明使用某个连接。
* @return
* @throws SQLException
*/
@Primary
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid.main")
public DataSource initMainDataSource() throws SQLException {
DruidDataSource mainDataSource = DataSourceBuilder.create().type(DruidDataSource.class).build();
return mainDataSource;
}
@Bean(name = "sds")
@ConfigurationProperties(prefix = "spring.datasource.druid.subo")
public DataSource initSuboDataSource() throws SQLException {
DruidDataSource suboDataSource = DataSourceBuilder.create().type(DruidDataSource.class).build();
return suboDataSource;
}
@Primary
@Bean
public Dao initNutzDao(DataSource dataSource){
return new NutDao(dataSource);
}
@Bean(name = "sdao")
public Dao initsNutzDao(@Qualifier("sds") DataSource dataSource){
return new NutDao(dataSource);
}
}
来源:oschina
链接:https://my.oschina.net/u/4148675/blog/3145442
nutz mysql druid_SpringBoot+Druid+Nutz+Jasypt整合配置多数据源相关推荐
- apache tomcat php mysql 配置_Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结...
Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结 1.作者:moonsbird 题目:Windows下Apache+Tomcat+MySQL+jsp+ph ...
- 小姐姐的详细SpringBoot教程之入门 连接Mysql、Druid数据源和整合MyBatis(三)
文章目录 1.整合JDBC使用 1.创建项目 2.打开项目 3.使用我们的Idea连接我们的mysql数据库 1. 5.最后,测试是否可以查询数据 6. 最后简单的实现增删改查 2.整合Druid数据 ...
- nutz mysql druid_在Nutz中给Druid配置数据库加密
dao.js代码片段 dataSource : { type : "com.alibaba.druid.pool.DruidDataSource", events : { crea ...
- springboot数据源不正确_springboot配置多数据源
在做项目的过程中难免会遇到这种情况:一个项目需要两个数据库中的数据,希望这篇文章能给遇到这些问题的小伙伴一点帮助 第一步:将两个数据源的mapper接口和xml文件分别放入不同的文件夹下: 第二步:在 ...
- nutz mysql druid_Druid-慢SQL日志记录 在nutz里datasource如何配置
谢谢^^ 做这种配置之后 info_slowsql.log输出来的日志无sql,请问一下是什么原因导致的? log4j的配置如下: log4j.rootLogger = info,stdout,D,n ...
- spring boot 集合mysql_Spring boot整合mysql和druid
Spring boot整合mysql和druid 集成mysql数据库 引入依赖 mysql mysql-connector-java runtime org.springframework.boot ...
- mybatis配置mysql数据源_springboot+mybatis+Druid配置多数据源(mysql+postgre)
springboot+mybatis+Druid配置多数据源(mysql+postgre) 引入pom依赖 org.mybatis.spring.boot mybatis-spring-boot-st ...
- SpringBoot MySql Druid配置主从数据源(多个数据源)
1 . POM依赖 <!--mybatis依赖 --> <dependency><groupId>mysql</groupId><artifact ...
- SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面
一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...
最新文章
- 设置float后,后面的元素位置问题。
- Nature综述:微生物的社交网络 - 营养缺陷型如何塑造复杂群落
- java jvm学习笔记二(类装载器的体系结构)
- 实验楼第二次试验报告
- CrazyDiskInfo硬盘检测工具 安装记录
- python元组 字符串 字典 习题+总结
- 发挥游戏人工智能的最大价值:线程化
- 设计模式(中介者模式-对象去耦)
- [css] 说说你对z-index的理解
- SqlServer数据库的常用操作-更新中
- python 配置文件返回的两种方式,写法不一样而已
- sql 获取日期时分秒_sql2000 获取当前日期只要年月日,不要时分秒
- 基于DEM数据的河流提取
- 一阶电路误差分析_PDE有限差分方法(12)——对流方程数值格式的分析方法
- 华为静态路由配置案例
- js 获取图片经纬度及写经纬度
- Linux如何检测栈溢出,Linux环境下栈溢出实验(一) 改变程序流程
- idea的项目模板的创建
- .removeAttribute is not a function
- word-spacing