一 .    引入依赖

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整合配置多数据源相关推荐

  1. apache tomcat php mysql 配置_Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结...

    Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结 1.作者:moonsbird 题目:Windows下Apache+Tomcat+MySQL+jsp+ph ...

  2. 小姐姐的详细SpringBoot教程之入门 连接Mysql、Druid数据源和整合MyBatis(三)

    文章目录 1.整合JDBC使用 1.创建项目 2.打开项目 3.使用我们的Idea连接我们的mysql数据库 1. 5.最后,测试是否可以查询数据 6. 最后简单的实现增删改查 2.整合Druid数据 ...

  3. nutz mysql druid_在Nutz中给Druid配置数据库加密

    dao.js代码片段 dataSource : { type : "com.alibaba.druid.pool.DruidDataSource", events : { crea ...

  4. springboot数据源不正确_springboot配置多数据源

    在做项目的过程中难免会遇到这种情况:一个项目需要两个数据库中的数据,希望这篇文章能给遇到这些问题的小伙伴一点帮助 第一步:将两个数据源的mapper接口和xml文件分别放入不同的文件夹下: 第二步:在 ...

  5. nutz mysql druid_Druid-慢SQL日志记录 在nutz里datasource如何配置

    谢谢^^ 做这种配置之后 info_slowsql.log输出来的日志无sql,请问一下是什么原因导致的? log4j的配置如下: log4j.rootLogger = info,stdout,D,n ...

  6. spring boot 集合mysql_Spring boot整合mysql和druid

    Spring boot整合mysql和druid 集成mysql数据库 引入依赖 mysql mysql-connector-java runtime org.springframework.boot ...

  7. mybatis配置mysql数据源_springboot+mybatis+Druid配置多数据源(mysql+postgre)

    springboot+mybatis+Druid配置多数据源(mysql+postgre) 引入pom依赖 org.mybatis.spring.boot mybatis-spring-boot-st ...

  8. SpringBoot MySql Druid配置主从数据源(多个数据源)

    1 . POM依赖 <!--mybatis依赖 --> <dependency><groupId>mysql</groupId><artifact ...

  9. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

最新文章

  1. 设置float后,后面的元素位置问题。
  2. Nature综述:微生物的社交网络 - 营养缺陷型如何塑造复杂群落
  3. java jvm学习笔记二(类装载器的体系结构)
  4. 实验楼第二次试验报告
  5. CrazyDiskInfo硬盘检测工具 安装记录
  6. python元组 字符串 字典 习题+总结
  7. 发挥游戏人工智能的最大价值:线程化
  8. 设计模式(中介者模式-对象去耦)
  9. [css] 说说你对z-index的理解
  10. SqlServer数据库的常用操作-更新中
  11. python 配置文件返回的两种方式,写法不一样而已
  12. sql 获取日期时分秒_sql2000 获取当前日期只要年月日,不要时分秒
  13. 基于DEM数据的河流提取
  14. 一阶电路误差分析_PDE有限差分方法(12)——对流方程数值格式的分析方法
  15. 华为静态路由配置案例
  16. js 获取图片经纬度及写经纬度
  17. Linux如何检测栈溢出,Linux环境下栈溢出实验(一) 改变程序流程
  18. idea的项目模板的创建
  19. .removeAttribute is not a function
  20. word-spacing

热门文章

  1. 阿里OSS自定义域名无法访问。404报错
  2. iviewui-Table fixed状态下遮挡滚动条
  3. CPU架构有多少种?X86与ARM有哪些不同之处?
  4. rstudio安装后打不开_r语言和rstudio的安装
  5. jitsi 编译安装_Jitsi的安装和运行
  6. fseek 函数 详解
  7. final 、finally的区别
  8. 机器学习生物医学图像处理方向研究前景如何?
  9. swif开发iOS中如果要对某块内容加背景图并自适应填充图像
  10. 在阿里,如何做好一个项目的启动?