datasource.properties

合集下载

戴安ICS-1000离子色谱系统操作手册

戴安ICS-1000离子色谱系统操作手册

ICS-1000离子色谱系统操作手册戴安中国有限公司技术服务中心2003.4目录1. 简介﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒ 22. 仪器介绍﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒ 63. 操作﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒224. 故障指南﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒275. 维修﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒34 附录A 技术指标﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒48 附录B 安装﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒51 附录C 常见问题﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒61 1. 简介离子色谱ICS-1000离子色谱系统可以进行抑制型或非抑制型电导检测,它由淋洗液、高压泵、进样阀、保护柱/分离柱、抑制器、电导池和数据处理系统组成。

首先分析已知组成和浓度的标准样品溶液,由数据处理系统生成校正曲线,再分析经过必要前处理的样品溶液,数据处理系统将其结果与先前生成的校正曲线进行比较,完成定性/定量的计算,得到样品结果。

图1. 离子分析流程图①淋洗液ICS-1000可以进行等浓度淋洗。

②进样阀液体样品由自动进样器或人工注入定量管后切换位置,由淋洗液推入分析柱。

③分离ICS-1000采用离子交换的分离方式,根据离子半径和价态的不同通过分离柱分离。

④抑制淋洗液和样品离子从分离柱进入抑制器,淋洗液的电导被抑制,背景噪音降低。

⑤检测电导池检测样品离子的电导率。

⑥数据分析电导池将检测信号传输至数据收集系统,根据离子的保留时间、峰高/峰面积等参数进行定性/定量计算,得出最终结果。

1.2 仪器概述ICS-1000包括泵、进样阀、柱加热器和电导检测器等,根据检测需要采用不同类型的保护柱、分离柱和抑制器,还可以选择柱加热器。

Chromeleon(6.50 SP2)是基于Windows 2000/XP操作平台的色谱数据处理系统,具备强大的数据采集和处理功能。

1.3 说明第一章《简介》介绍了操作书册的使用和安全注意事项。

第二章《特性》介绍了ICS-1000的操作特性、系统组成和Chromeleon的用户界面。

BasicDataSource配置

BasicDataSource配置

BasicDataSource配置BasicDataSource配置jdbcjavasqlwebapachecommons DBCP 配置参数简要说明前段时间因为项目原因,要在修改数据库连接池到DBCP上,折腾了半天,有一点收获,不敢藏私,特在这里与朋友们共享。

在配置时,主要难以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait这四个参数,设置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。

:) 有点忘了。

logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。

在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。

以下是我的配置的properties文件:#连接设置jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER ername=userjdbc.password=pass#dataSource.initialSize=10#dataSource.maxIdle=20#dataSource.minIdle=5#最大连接数量dataSource.maxActive=50#是否在自动回收超时连接的时候打印连接的超时错误dataSource.logAbandoned=true#是否自动回收超时连接dataSource.removeAbandoned=true#超时时间(以秒数为单位)dataSource.removeAbandonedTimeout=180#dataSource.maxWait=1000以下是我在连接控制中调用的方法:Properties dbProps=null;//下面的读取配置文件可以根据实际的不同修改dbProps =ConfigProperties.getInstance().getProperties("jdbc.propert ies");try {String driveClassName =dbProps.getProperty("jdbc.driverClassName");String url = dbProps.getProperty("jdbc.url");String username = dbProps.getProperty("ername"); String password =dbProps.getProperty("jdbc.password");String initialSize = dbProps.getProperty("dataSource.initialSize");String minIdle =dbProps.getProperty("dataSource.minIdle");String maxIdle =dbProps.getProperty("dataSource.maxIdle");String maxWait =dbProps.getProperty("dataSource.maxWait");String maxActive =dbProps.getProperty("dataSource.maxActive");//是否在自动回收超时连接的时候打印连接的超时错误boolean logAbandoned =(Boolean.valueOf(dbProps.getProperty("dataSource.logAb andoned","false"))).booleanValue();//是否自动回收超时连接boolean removeAbandoned =(Boolean.valueOf(dbProps.getProperty("dataSource.remo veAbandoned","false"))).booleanValue();//超时时间(以秒数为单位)int removeAbandonedTimeout =Integer.parseInt(dbProps.getProperty("dataSource.remove AbandonedTimeout","300"));dataSource = new BasicDataSource();dataSource.setDriverClassName(driveClassName); dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);//初始化连接数if(initialSize!=null)dataSource.setInitialSize(Integer.parseInt(initialSize));//最小空闲连接if(minIdle!=null)dataSource.setMinIdle(Integer.parseInt(minIdle));//最大空闲连接if(maxIdle!=null)dataSource.setMaxIdle(Integer.parseInt(maxIdle));//超时回收时间(以毫秒为单位)if(maxWait!=null)dataSource.setMaxWait(Long.parseLong(maxWait));//最大连接数if(maxActive!=null){if(!maxActive.trim().equals("0"))dataSource.setMaxActive(Integer.parseInt(maxActive)); }System.out.println("logAbandoned="+logAbandoned); dataSource.setLogAbandoned(logAbandoned); dataSource.setRemoveAbandoned(removeAbandoned); dataSource.setRemoveAbandonedTimeout(removeAband onedTimeout);Connection conn =dataSource.getConnection();if(conn==null){log("创建连接池时,无法取得连接!检查设置!!!");}else{conn.close();}System.out.println("连接池创建成功!!!");}catch (Exception e) {e.printStackTrace();System.out.println("创建连接池失败!请检查设置!!!");}有使用问题或建议可与我联系:yy-man@2006-04-20 By: 小土用apache的dbcp 来建立独立的数据库连接池(db connection pool)数据库连接池的好处是不言而喻的,现在大部分的application server都提供自己的数据库连接池方案,此时,只要按照application server的文档说明,正确配置,即可在应用中享受到数据库连接池的好处。

SpringBoot配置druid数据源配置慢SQL记录

SpringBoot配置druid数据源配置慢SQL记录

SpringBoot配置druid数据源配置慢SQL记录在SpringBoot中,我们可以使用Druid来配置数据源,并且可以配置Druid来记录慢SQL。

Druid是阿里巴巴开源的数据库连接池和监控平台,它提供了丰富的功能,包括连接池、SQL监控、性能分析等。

首先,我们需要在pom.xml文件中添加Druid的依赖:```xml<dependencies><dependency><artifactId>druid-spring-boot-starter</artifactId><version>1.2.3</version></dependency></dependencies>```然后,我们需要在application.properties或application.yml文件中配置Druid的数据源:```propertiesspring.datasource.url=jdbc:mysql://localhost:3306/testername=rootspring.datasource.password=root接着,我们需要在配置类中添加Druid的相关配置,包括数据源、过滤器等。

同时,我们还需要配置慢SQL的阈值,用于监控慢SQL的执行情况。

```javapublic class DruidConfigprivate String url;private String username;private String password;private String driverClassName;public DataSource dataSourcDruidDataSource dataSource = new DruidDataSource(;dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setDriverClassName(driverClassName);dataSource.setFilters("stat,wall,slf4j");dataSource.setConnectionProperties("druid.stat.slowSqlMillis =5000");return dataSource;public ServletRegistrationBean<StatViewServlet> druidStatViewServleServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(, "/druid/*");Map<String, String> initParams = new HashMap<>(;initParams.put("loginUsername", "admin");initParams.put("loginPassword", "admin");servletRegistrationBean.setInitParameters(initParams);return servletRegistrationBean;}public FilterRegistrationBean<WebStatFilter> druidWebStatFilteFilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<>(new WebStatFilter();filterRegistrationBean.setFilter(new WebStatFilter();filterRegistrationBean.addUrlPatterns("/*");filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}```上述配置中,我们通过设置`dataSource.setFilters("stat,wall,slf4j")`来开启慢SQL记录,`dataSource.setConnectionProperties("druid.stat.slowSqlMillis=50 00")`用于设置慢SQL的阈值为5000毫秒。

数据源(DataSource)是什么

数据源(DataSource)是什么

数据源(DataSource)是什么数据源数据源,简单理解为数据源头,提供了应⽤程序所需要数据的位置。

数据源保证了应⽤程序与⽬标数据之间交互的规范和协议,它可以是数据库,⽂件系统等等。

其中数据源定义了位置信息,⽤户验证信息和交互时所需的⼀些特性的配置,同时它封装了如何建⽴与数据源的连接,向外暴露获取连接的接⼝。

应⽤程序连接数据库⽆需关注其底层是如何如何建⽴的,也就是说应⽤业务逻辑与连接数据库操作是松耦合的。

以下只讨论当数据源为数据库的情况,且为Java环境下JDBC规范下的如何建⽴与数据库的连接,其他情况类似。

DriverManagerJDBC(Java DataBase Connectivity, 简称JDBC)是Java中⽤于规范应⽤程序如何来访问数据库的应⽤程序接⼝(API),它提供了查询和更新数据库中数据的⽅法。

在基于Java的应⽤程序中,我们需要使⽤JDBC驱动程序与数据库进⾏交互,其中最重要的⼀步就是获取与数据库的连接。

在传统的JDBC时代,我们通常写⼀个通⽤的⽅法来封装与数据库的建⽴操作:` public Connection getConnection() throws SQLException {Connection conn = null;Properties connectionProps = new Properties();connectionProps.put("user", erName);connectionProps.put("password", this.password);//获取获取连接conn = DriverManager.getConnection("jdbc:" + this.dbms + "://" +this.serverName +":" + this.portNumber + "/",connectionProps);return conn;}`以上的代码对于早些的程序员是再熟悉不过了,我们利⽤驱动管理器为应⽤程序提供数据库连接,虽然使⽤形式简单,但有个很⼤的问题就是:程序员需要⾃⼰去写建⽴连接的操作,且该⽅法已经与我们的应⽤程序是紧耦合的,在后续需要更改数据库时,需要程序员⼿动修改这⾥。

springboot2Hikari多数据源配置问题(dataSourceClassName。。。

springboot2Hikari多数据源配置问题(dataSourceClassName。。。

springboot2Hikari多数据源配置问题(dataSourceClassName。

springboot 2 Hikari 多数据源配置问题(dataSourceClassName or jdbcUrl is required)最近在项⽬中想试⼀下使⽤ Hikari 连接池,以前⽤的是阿⾥的 Druid,框架是 Spring MVC,xml配置⽂件⽅式注⼊的 Bean,现在换成Spring Boot 之后,总遇到⼀些奇怪的问题,问题的根源是在于⾃⼰是个半桶⽔。

好了,先来看看 application.yml 配置⽂件:spring:jpa:show-sql: truedatasource:url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=trueusername: rootpassword: roottype: com.zaxxer.hikari.HikariDataSourcehikari:maximum-pool-size: 20max-lifetime: 30000idle-timeout: 30000data-source-properties:prepStmtCacheSize: 250prepStmtCacheSqlLimit: 2048cachePrepStmts: trueuseServerPrepStmts: trueslave:url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=trueusername: rootpassword: roottype: com.zaxxer.hikari.HikariDataSourcehikari:maximum-pool-size: 20max-lifetime: 30000idle-timeout: 30000data-source-properties:prepStmtCacheSize: 250prepStmtCacheSqlLimit: 2048cachePrepStmts: trueuseServerPrepStmts: true复制代码数据源配置⽂件:package org.seckill.config;import com.zaxxer.hikari.HikariDataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;import java.util.HashMap;import java.util.Map;/**数据源配置@author jeftom@date 2019-04-14 12:03@since 1.0.0*/@Configurationpublic class DataSourceConfig {private final static Logger LOGGER = LoggerFactory.getLogger(DataSourceConfig.class);@Bean(name = "masterDataSource")@ConfigurationProperties(prefix = "spring.datasource")public DataSource masterDataSource(DataSourceProperties properties) {("init master data source:{}", properties);return DataSourceBuilder.create().build();}@Bean(name = "slaveDataSource")@ConfigurationProperties(prefix = "spring.datasource.slave")public DataSource slaveDataSource(DataSourceProperties properties) {("init slave data source:{}", properties);return DataSourceBuilder.create().build();}@Bean@Primarypublic DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource) {Map<String, DataSource> targetDataSources = new HashMap<>();targetDataSources.put(DataSourceEnum.MASTER.getName(), masterDataSource);targetDataSources.put(DataSourceEnum.SLAVE.getName(), slaveDataSource);<span class="hljs-built_in"><span class="hljs-built_in">return</span></span> new DynamicDataSource(masterDataSource, targetDataSources);}}复制代码报错信息:com.zaxxer.hikari.HikariConfig : HikariPool-1 - dataSource or dataSourceClassName or jdbcUrl is required.ng.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:955) ~[HikariCP-3.2.0.jar:na]复制代码百度了⼀下找到的解决⽅法:1. url 换成了 jdbc-url;2. 增加 driver-class-name: com.mysql.cj.jdbc.Driver试了⼀下,果然真的可以。

drivermanagerdatasource 关闭

drivermanagerdatasource 关闭

drivermanagerdatasource 关闭如何关闭DriverManagerDataSource 数据源?在Java开发中,使用数据源(DataSource)是一种常见的数据库连接池管理方案。

而DriverManagerDataSource是Spring框架提供的一种实现数据源的类,它是基于JDBC的DriverManager类的封装。

如果我们在使用DriverManagerDataSource时,需要手动关闭数据源,以释放资源。

接下来,我将一步一步回答如何关闭DriverManagerDataSource数据源。

第一步:导入相关依赖在使用DriverManagerDataSource之前,需要在项目的依赖管理文件(例如Maven的pom.xml或者Gradle的build.gradle)中添加相应的依赖。

对于Maven项目,可以在poms.xml文件中,添加以下依赖:xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>对于Gradle项目,可以在build.gradle文件中,添加以下依赖:groovydependencies {implementation'org.springframework.boot:spring-boot-starter-data-jpa'}在完成依赖的导入后,重新构建项目,以确保相关依赖成功引入。

第二步:配置数据源在Spring Boot项目的配置文件(application.properties或application.yml)中,需要进行数据源的相关配置。

以下是一个示例的application.properties文件的配置:spring.datasource.url=jdbc:mysql:localhost:3306/mydatabase ername=usernamespring.datasource.password=passwordspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver在配置文件中,需要设置数据源的连接URL、用户名、密码,以及使用的数据库驱动类。

dynamicdatasourceautoconfiguration使用_解释说明

dynamicdatasourceautoconfiguration使用_解释说明

dynamicdatasourceautoconfiguration使用解释说明1. 引言1.1 概述在当今互联网时代,动态数据源的自动配置成为了一个关键的技术需求。

动态数据源是指能够在运行时根据需求切换不同数据源的能力。

传统的静态数据源配置方式无法满足多样化、灵活性强的需求,因此引入了动态数据源自动配置技术来解决这一问题。

本文将深入探讨dynamicdatasourceautoconfiguration使用细节和实践案例分析,通过对该技术的全面介绍和分析,旨在帮助读者更好地理解和应用该技术。

1.2 文章结构本文主要包含以下几个部分:2. 动态数据源自动配置(dynamicdatasourceautoconfiguration)使用:对dynamicdatasourceautoconfiguration进行详细介绍,并探讨其使用场景以及配置方式与步骤。

3. 实践案例分析:通过一个具体的案例背景介绍、实施过程与结果分析以及总结与应用建议来展示dynamicdatasourceautoconfiguration的实际应用情况。

4. 动态数据源自动配置的优缺点分析:对dynamicdatasourceautoconfiguration的优点和缺点进行详细讨论,以帮助读者更好地评估该技术的适用性和限制。

5. 结论与展望:总结文章内容,并对未来动态数据源自动配置的发展方向和研究重点给出建议。

1.3 目的本文的目的是为读者提供一个全面深入的了解dynamicdatasourceautoconfiguration使用方法和应用场景,以及对该技术进行实践案例分析和优缺点评估。

通过阅读本文,读者将能够更好地理解和应用dynamicdatasourceautoconfiguration,并为未来的研究和实践提供指导。

2. 动态数据源自动配置(dynamicdatasourceautoconfiguration)使用2.1 动态数据源介绍动态数据源是指可以在运行时动态切换或添加数据库连接的功能。

idea 配置多数据源最简单的方法

idea 配置多数据源最简单的方法

idea 配置多数据源最简单的方法在使用SpringBoot开发项目时,有时需要配置多个数据源。

这时候,我们可以使用 Spring Boot 的自动配置来简化配置。

首先,在 Maven 或 Gradle 中引入需要的数据库驱动依赖。

然后,在 application.properties 或 application.yml 中分别配置多个数据源的相关属性,如下:spring.datasource.primary.url=jdbc:mysql://localhost:3306/p rimaryername=rootspring.datasource.primary.password=rootspring.datasource.secondary.url=jdbc:mysql://localhost:3306 /secondaryername=rootspring.datasource.secondary.password=root然后,在主类上添加 @EnableAutoConfiguration 注解,同时在多个数据源的配置类中分别添加 @Configuration 和 @Primary 注解,如下:@Configurationpublic class PrimaryDataSourceConfig {@Bean(name = 'primaryDataSource')@Primary@ConfigurationProperties(prefix ='spring.datasource.primary')public DataSource dataSource(){return DataSourceBuilder.create().build();}}@Configurationpublic class SecondaryDataSourceConfig {@Bean(name = 'secondaryDataSource')@ConfigurationProperties(prefix ='spring.datasource.secondary')public DataSource dataSource(){return DataSourceBuilder.create().build();}}最后,在需要使用数据源的地方,使用 @Qualifier 注解指定需要使用的数据源,如下:@Autowired@Qualifier('primaryDataSource')private DataSource primaryDataSource;@Autowired@Qualifier('secondaryDataSource')private DataSource secondaryDataSource;这样,就可以实现简单的多数据源配置了。

解决Druid动态数据源配置重复刷错误日志的问题

解决Druid动态数据源配置重复刷错误日志的问题

解决Druid动态数据源配置重复刷错误⽇志的问题Druid动态数据源配置主要是继承AbstractRoutingDataSource再通过AOP来实现动态数据源切换.下⾯给⼤家介绍Druid动态配置数据源重复刷错误⽇志问题,具体内容如下所⽰:问题描述功能需求:使⽤druid数据库连接池实现动态的配置数据源功能:IP、端⼝、⽤户名、密码都是⽤户页⾯⼿动输⼊,可以测试连接,保存数据源。

问题说明:既然是⽤户⾃⼰配置的数据源,就⽆法避免输⼊错误,连接失败等情况。

预期情况:⽤户输⼊的配置错误,测试连接时,会返回连接失败的信息。

实际情况:数据源测试连接,连接失败后:后台⼀直打印错误信息,⼀直⾃动重连⽅法被阻塞⽆返回信息,导致前端页⾯⼀直处于等待状态【错误信息】:com.alibaba.druid.pool.DruidDataSource-create connection SQLException, url:xxx, errorCode 0, state 08S01The last packet sent successfully to the server was 0 milliseconds ago.The driver has not received any packets from the server.【原始代码】:public static void getDataSource(DataConfig dataConfig) throws Exception{try {Properties properties = new Properties();properties.setProperty("driverClassName",dataConfig.getDriverClassName());properties.setProperty("url",dataConfig.getUrl());properties.setProperty("username",dataConfig.getUserName());properties.setProperty("password",dataConfig.getPassWord());DataSource ds = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {e.printStackTrace();}}解决办法【参数说明】参数解释connectionErrorRetryAttempts连接出错后再尝试连接次数breakAfterAcquireFailure数据库服务宕机⾃动重连机制maxWait超时等待时间【修改后的代码】public static void getDataSource(DataConfig dataConfig) throws Exception{try {Properties properties = new Properties();properties.setProperty("driverClassName",dataConfig.getDriverClassName());properties.setProperty("url",dataConfig.getUrl());properties.setProperty("username",dataConfig.getUserName());properties.setProperty("password",dataConfig.getPassWord());properties.setProperty("maxWait","500");//如果失败,当前的请求可以返回DruidDataSource druidDataSource = (DruidDataSource)DruidDataSourceFactory.createDataSource(properties);druidDataSource.setConnectionErrorRetryAttempts(0);// 失败后重连的次数druidDataSource.setBreakAfterAcquireFailure(true);//请求失败之后中断DataSource ds = druidDataSource;//如果有需要使⽤javax.sql.DataSource的话} catch (Exception e) {e.printStackTrace();}}踩坑总结不要在properties中配置connectionErrorRetryAttempts和breakAfterAcquireFailure,没有效果连接失败的具体错误信息,catch不到,源码中已经catch了异常信息,做了相关处理到此这篇关于解决Druid动态数据源配置重复刷错误⽇志的问题的⽂章就介绍到这了,更多相关Druid动态数据源配置内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

resourcedatabasepopulator简单使用

resourcedatabasepopulator简单使用

ResourceDatabasePopulator 是Spring Boot 提供的一个用于填充H2、Derby、HSQLDB、MySQL、PostgreSQL 和SQL Server 等数据库的工具类。

以下是一个简单的使用示例:1. 首先,在`pom.xml` 文件中添加相关依赖:```xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency>```2. 在`application.properties` 文件中配置数据源和Hibernate:```propertiesspring.datasource.url=jdbc:h2:mem:testdbspring.datasource.driverClassName=org.h2.Driverername=saspring.datasource.password=passwordspring.jpa.database-platform=org.hibernate.dialect.H2Dialectspring.jpa.hibernate.ddl-auto=update```3. 创建一个实体类`User`:```javaimport javax.persistence.*;Entitypublic class User {IdGeneratedValue(strategy = GenerationType.AUTO)private Long id;private String name;private String email;// 省略getter 和setter 方法}```4. 创建一个继承自`AbstractDatabasePopulator` 的类`DatabasePopulator`,并实现`populate` 方法:```javaimport org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.env.Environment;import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;import javax.sql.DataSource;import java.util.Arrays;import java.util.List;import static mon.collect.Lists.*;Configurationpublic class DatabasePopulatorConfig {private final Environment env;public DatabasePopulatorConfig(Environment env) {this.env = env;}Beanpublic DataSource dataSource() {return new DataSourceBuilder().type(EmbeddedDatabaseType.H2) // 使用H2 数据库作为嵌入式数据库.build();}Beanpublic List<ResourceDatabasePopulator> databasePopulators() {// 根据环境变量选择要使用的数据库类型,这里以H2 为例String databaseType = env.getProperty("spring.datasource.platform");return singletonList(new H2DatabasePopulator()); // 如果使用其他数据库,请替换为相应的Populator 类,如PostgresDatabasePopulator、MySQLDatabasePopulator 等。

HikariDataSourceSpringboot默认数据源池更改为Druid

HikariDataSourceSpringboot默认数据源池更改为Druid

HikariDataSourceSpringboot默认数据源池更改为Druid HikariDataSource Spring boot 默认数据源池还有DruidDatasoure的配置,需要注意的是@Beanpublic JdkRegexpMethodPointcut druidStatPointcut() {JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();String patterns = "com.jxdinfo.hussar.*.service.*";druidStatPointcut.setPatterns(new String[]{patterns});return druidStatPointcut;}import com.alibaba.druid.filter.stat.MergeStatFilter;import com.alibaba.druid.pool.DruidDataSource;import com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor;import com.baomidou.mybatisplus.plugins.PaginationInterceptor;import com.ydzbinfo.hussar.config.properties.ConnectionPoolProperties;import com.ydzbinfo.hussar.core.datasource.DruidProperties;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;import java.sql.Connection;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;@Configuration@EnableTransactionManagement(order = 2)public class MybatisPlusConfig {private static Map<Object, Object> targetDataSource = new HashMap();@AutowiredDruidProperties druidProperties;/*@AutowiredMutiDataSourceOneProperties mutiDataSourceOneProperties;@AutowiredMutiDataSourceTwoProperties mutiDataSourceTwoProperties;@AutowiredMutiDataSourceThreeProperties mutiDataSourceThreeProperties;@AutowiredMutiDataSourceFourProperties mutiDataSourceFourProperties;@AutowiredHussarProperties hussarProperties;*/@AutowiredConnectionPoolProperties connectionPoolProperties;public MybatisPlusConfig() {}public static void setTargetDataSource(String dataSourceKey, DruidDataSource druidDataSource) {targetDataSource.put(dataSourceKey, druidDataSource);}public DruidDataSource dataSourceHussar() {DruidDataSource dataSource = new DruidDataSource();dataSource.getProxyFilters().remove(MergeStatFilter.class);dataSource.getProxyFilters().add(this.mergeStatFilter());this.druidProperties.config(dataSource);return dataSource;}@Beanpublic MergeStatFilter mergeStatFilter() {MergeStatFilter statFilter = new MergeStatFilter();statFilter.setSlowSqlMillis((long) this.connectionPoolProperties.getSlowSqlMillis());statFilter.setLogSlowSql(this.connectionPoolProperties.isLogSlowSql());statFilter.setMergeSql(this.connectionPoolProperties.isMergeSql());return statFilter;}@Bean@ConditionalOnProperty(prefix = "hussar",name = {"muti-datasource-open"},havingValue = "false",matchIfMissing = true)public DataSource singleDatasource() {return (DataSource)this.dataSourceHussar();}/* @Beanpublic PaginationInterceptor paginationInterceptor(DataSource dataSource) throws SQLException { PaginationInterceptor inter = new PaginationInterceptor();Connection connection = dataSource.getConnection();String url = connection.getMetaData().getURL();String driverClassName = connection.getMetaData().getDriverName();connection.close();return inter;}*//*@Beanpublic DataScopeInterceptor dataScopeInterceptor() {return new DataScopeInterceptor();}*/@Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();}/* @Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}*/}。

springboot连接数据库报错testWhileIdleistrue,validati。。。

springboot连接数据库报错testWhileIdleistrue,validati。。。

springboot连接数据库报错testWhileIdleistrue,validati。

问题描述: 使⽤springboot连接数据库,启动的时候报错:testWhileIdle is true, validationQuery not set。

但是不影响系统使⽤,数据库等⼀切访问正常。

application.properties数据源配置如下: ername=root spring.datasource.password= spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.initial-size=1 spring.datasource.maximum-pool-size=10 spring.datasource.connection-timeout=5000问题分析: 查了这句话的意思:空闲的时候进⾏检测是开启的,但是检测的查询语句没有设置。

⼤致意思就是说,当数据库没有接收到请求时,会进⾏数据库连接检测,检查数据库是否还是连着的。

检查数据库是否断开需要发送sql语句。

报错是说这个sql语句没有设置。

那么解决思路有两个: 1、设置不进⾏空闲时连接检测。

2、开启空闲时连接检测,并设置检测⽤的sql语句。

先查了资料,说testWhileIdle默认是false的,这是竟然是true,整个代码搜索了⼀下,也没有见到设置testWhileIdle的地⽅,推测应该是版本不⼀样,新版本jar包⾥⾯默认设置为true。

好吧,先不管这些,既然都是数据库的设置,那么应该可以在配置数据源的时候加上这些配置,⽹上搜索了配置的写法,如下: spring.datasource.test-while-idle=true spring.datasource.validation-query=SELECT 1 但是发现还是不起作⽤,仍然报错。

关于MybatisPlus配置双数据库驱动连接数据库问题

关于MybatisPlus配置双数据库驱动连接数据库问题

关于MybatisPlus配置双数据库驱动连接数据库问题最近项⽬中需要⽤到2种数据库驱动连接数据库,下⾯我们基于MybatisPlus实现⼀下具体实现1、在pom.xml中添加如下依赖:<properties><java.version>1.8</java.version><lombok.version>1.18.2</lombok.version><mybatis-plus.version>3.2.0</mybatis-plus.version><druid.version>1.1.9</druid.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- postgrepsql--><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency></dependencies>2、在yml配置⽂件中添加如下配置:server:port: 8080spring:application:name: xxxxdatasource:druid:# mysql数据源配置db1:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: ${username}password: ${password}initial-size: 5min-idle: 5max-active: 50# postgresql 数据源配置db2:driver-class-name: org.postgresql.Driverurl: jdbc:postgresql://127.0.0.1:5432/db2?useUnicode=true&characterEncoding=utf-8username: ${username}password: ${password}initial-size: 5min-idle: 5max-active: 50# mybatis-plus配置mybatis-plus:type-aliases-package: com.dms.gateway.api.entitymapper-locations: classpath:/mapper/*Mapper.xmlglobal-config:db-config:id-type: autofield-strategy: not_emptylogic-delete-value: 1logic-not-delete-value: 0configuration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpl3、新建DataSourceEnum枚举类,如下:public enum DataSourceEnum {DB1("db1"),DB2("db2");private String value;DataSourceEnum(String value){this.value=value;}public String getValue() {return value;}}4、新建DataSourceContextHolder类,如下:public class DataSourceContextHolder {// 默认数据源public static final String DEFAULT_DS = DataSourceEnum.DB1.getValue();private static final ThreadLocal<String> contextHolder = new InheritableThreadLocal<>();/*** 设置数据源* @param db*/public static void setDataSource(String db){contextHolder.set(db);}/*** 取得当前数据源* @return*/public static String getDataSource(){return contextHolder.get();}/*** 清除上下⽂数据*/public static void clear(){contextHolder.remove();}}5、新建MultipleDataSource类,如下:public class MultipleDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return DataSourceContextHolder.getDataSource();}}6、新建DataSource注解,如下:@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface DataSource {DataSourceEnum value() default DataSourceEnum.DB1;}7、新建⾯向类和⽅法级别的切⾯,如下:@Component@Slf4j@Aspect@Order(-6)public class DataSourceClassAspect {@Before("@within(dataSource)")public void doBefore(JoinPoint point, DataSource dataSource){("切换到数据源[{}]", dataSource.value().getValue());DataSourceContextHolder.setDataSource(dataSource.value().getValue()); }@After("@within(dataSource)")public void doAfter(JoinPoint point, DataSource dataSource){("回收数据源[{}]", dataSource.value().getValue());DataSourceContextHolder.clear();}}@Component@Slf4j@Aspect@Order(-5)public class DataSourceMethodAspect {@Before("@annotation(dataSource)")public void doBefore(JoinPoint point, DataSource dataSource){("切换到数据源[{}]", dataSource.value().getValue());DataSourceContextHolder.setDataSource(dataSource.value().getValue()); }@After("@annotation(dataSource)")public void doAfter(JoinPoint point, DataSource dataSource){("回收数据源[{}]", dataSource.value().getValue());DataSourceContextHolder.clear();}}8、新建多数据源配置类,如下:@Configuration@MapperScan("com.dms.gateway.api.mapper")public class MybatisPlusConfig {/** 分页插件,⾃动识别数据库类型* 多租户,请参考官⽹【插件扩展】*/@Beanpublic PaginationInterceptor paginationInterceptor() {PaginationInterceptor paginationInterceptor = new PaginationInterceptor();return paginationInterceptor;}@Bean(name = "db1")@ConfigurationProperties(prefix = "spring.datasource.druid.db1" )public DataSource db1() {return DruidDataSourceBuilder.create().build();}@Bean(name = "db2")@ConfigurationProperties(prefix = "spring.datasource.druid.db2" )public DataSource db2() {return DruidDataSourceBuilder.create().build();}/*** 动态数据源配置* @return*/@Bean@Primarypublic DataSource multipleDataSource(@Qualifier("db1") DataSource db1,@Qualifier("db2") DataSource db2) {MultipleDataSource multipleDataSource = new MultipleDataSource();Map< Object, Object > targetDataSources = new HashMap<>();targetDataSources.put(DataSourceEnum.DB1.getValue(), db1);targetDataSources.put(DataSourceEnum.DB2.getValue(), db2);//添加数据源multipleDataSource.setTargetDataSources(targetDataSources);//设置默认数据源multipleDataSource.setDefaultTargetDataSource(db1);return multipleDataSource;}@Bean("sqlSessionFactory")public SqlSessionFactory sqlSessionFactory() throws Exception {MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();sqlSessionFactory.setDataSource(multipleDataSource(db1(),db2()));MybatisConfiguration configuration = new MybatisConfiguration();configuration.setJdbcTypeForNull(JdbcType.NULL);configuration.setMapUnderscoreToCamelCase(true);configuration.setCacheEnabled(false);sqlSessionFactory.setConfiguration(configuration);//添加分页功能sqlSessionFactory.setPlugins(paginationInterceptor());return sqlSessionFactory.getObject();}}接下来需要具体的业务逻辑,在service层的类或者⽅法上⾯添加@DataSource注解来指定该业务需要⽤到的数据源,如下:@Service@DataSource(DataSourceEnum.DB2)public class GatewayLogService {@Autowiredprivate GatewayLogMapper mapper;@Overridepublic Result<IPage<GatewayLog>> pageList(GatewayLogDTO gatewayLogDTO) {LambdaQueryWrapper<GatewayLog> wrapper = mbdaQuery();wrapper.like(StringUtils.isNotEmpty(gatewayLogDTO.getPath()), GatewayLog::getPath, gatewayLogDTO.getPath());wrapper.like(StringUtils.isNotEmpty(gatewayLogDTO.getSourceServer()), GatewayLog::getSourceServer, gatewayLogDTO.getSourceServer()); wrapper.like(StringUtils.isNotEmpty(gatewayLogDTO.getTargetServer()), GatewayLog::getTargetServer, gatewayLogDTO.getTargetServer()); wrapper.eq(StringUtils.isNotEmpty(gatewayLogDTO.getMethod()), GatewayLog::getMethod, gatewayLogDTO.getMethod());wrapper.like(StringUtils.isNotEmpty(gatewayLogDTO.getRequestBody()), GatewayLog::getRequestBody, gatewayLogDTO.getRequestBody()); wrapper.like(StringUtils.isNotEmpty(gatewayLogDTO.getResponse()), GatewayLog::getResponse, gatewayLogDTO.getResponse());wrapper.orderByDesc(GatewayLog::getId);IPage<GatewayLog> page = new Page<>(gatewayLogDTO.getPageNo(), gatewayLogDTO.getPageSize());return Result.success(mapper.selectPage(page, wrapper));}}启动服务,调⽤相关的接⼝,我们会在控制台看到如下信息:说明数据源切换成功到此这篇关于关于MybatisPlus配置双数据库驱动连接数据库问题的⽂章就介绍到这了,更多相关MybatisPlus配置双数据库内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

springboot利用ConfigurationProperties注解配置数据源无法读。。。

springboot利用ConfigurationProperties注解配置数据源无法读。。。
#配置信息 spring:
datasource: type: com.alibaba.druid.pool.DruidDataSource #MySQL配置 driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/graduate?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: root
debug过后发现配置文件属性没有读取成功
解决方法:
@Bean(name = "pq") @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSourcePq() { //return DataSourceBuilder.create().build(); return new DruidDataSource(); }
请求出错错误代码400请尝试刷新页面重试
springboot利用 ConfigurationProperties注解配置数据源无法 读。。。
出现的问题:
利用ConfigurationProperties注解配置数据源发现读取的数据库配置信息全部为null。
@Bean(name = "pq") @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSourcePq() { return DataSourceBuilder.create().build(); }

druiddatasourceautoconfigure 源码原理

druiddatasourceautoconfigure 源码原理

druiddatasourceautoconfigure 源码原理
DruidDataSourceAutoConfigure类是Spring Boot的自动配置类之一,用于自动配置Druid数据源的相关属性。

其源码原理可以简要概括如下:
1. 首先检查类路径下是否存在DruidDataSource的类,如果不存在则不进行自动配置;
2. 如果存在DruidDataSource的类,则通过@Configuration注解使Druid的配置生效;
3. 通过@ConfigurationProperties注解加载配置文件中以"spring.datasource.druid"为前缀的配置项,并将其绑定到DruidDataSourceProperties对象中;
4. 在DruidDataSourceProperties对象中,提供了一系列的setter 和getter方法,用于对Druid数据源的各个属性进行设置和获取;
5. 创建一个DataSource对象,并将DruidDataSourceProperties 中的属性赋值给该对象;
6. 对DataSource对象进行必要的配置,例如设置初始化连接数、最小连接数、最大连接数等;
7. 将DataSource对象注册为Spring Bean,使其能够被其他组件使用。

总体来说,DruidDataSourceAutoConfigure类的作用就是自动配置Druid数据源,并将其注册为Spring Bean,简化了手动配置的步骤。

FailedtoconfigureaDataSource:urlattributeisno。。。

FailedtoconfigureaDataSource:urlattributeisno。。。

FailedtoconfigureaDataSource:urlattributeisno。

问题分析及解决⽅案问题原因: Mybatis没有找到合适的加载类,其实是⼤部分spring - datasource - url没有加载成功,分析原因如下所⽰.1. DataSourceAutoConfiguration会⾃动加载.2. 没有配置spring - datasource - url 属性.3. spring - datasource - url 配置的地址格式有问题.4. 配置 spring - datasource - url的⽂件没有加载.⽅案⼀ (解决原因1)排除此类的autoconfig。

启动以后就可以正常运⾏。

@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})⽅案⼆ (解决原因2)在application.properties/或者application.yml⽂件中没有添加数据库配置信息.spring:datasource:url: jdbc:mysql://localhost:3306/read_data?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver⽅案三 (解决原因3)在spring xml配置⽂件中引⽤了数据库地址所以需要对:等进⾏转义处理.但是在application.properties/或者application.yml⽂件并不需要转义,错误和正确⽅法写在下⾯了.//错误⽰例spring.datasource.url = jdbc:mysql\://192.168.0.20\:1504/f_me?setUnicode=true&characterEncoding=utf8//正确⽰例spring.datasource.url = jdbc:mysql://192.168.0.20:1504/f_me?setUnicode=true&characterEncoding=utf8⽅案四 (解决原因4)yml或者properties⽂件没有被扫描到,需要在pom⽂件中<build></build>添加如下.来保证⽂件都能正常被扫描到并且加载成功.<!-- 如果不添加此节点mybatis的mapper.xml⽂件都会被漏掉。

springboot启动报错:requiredabeanoftypexxxReposito。。。

springboot启动报错:requiredabeanoftypexxxReposito。。。

springboot启动报错:requiredabeanoftypexxxReposito。

springboot启动的时候报错,错误如下:Field demoRepository in com.ge.serviceImpl.DemoServiceImpl required a bean of type 'com.ge.dao.DemoRepository' that could not be found.The injection point has the following annotations:- @org.springframework.beans.factory.annotation.Autowired(required=true)Action:Consider defining a bean of type 'com.ge.dao.DemoRepository' in your configuration.原因分析:由于搭建的springboot项⽬是分模块搭建的,使⽤的是spring-data-jpacom.ge.dao.DemoRepository是在ge-springboot-dao模块下。

代码如下public interface DemoRepository extends JpaRepository<Demo, Integer> {}但是SpringBootApplication是在ge-springboot-web这个module下。

com.ge.MainApplication@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})public class MainApplication {public static void main(String[] args) {SpringApplication.run(MainApplication.class, args);}}看错误信息的意思是spring找不到这个bean,也就是扫描不到。

ruoyi(spring-boot)项目druid连接池配置多个数据源

ruoyi(spring-boot)项目druid连接池配置多个数据源

ruoyi(spring-boot)项⽬druid连接池配置多个数据源为了容易区分,最好把不同数据库的代码放到不同⽬录下1.⾸先修改 application-druid.ymldruid:# 主库数据源master:url: jdbc:mysql://localhost:3306/ryusername: rootpassword: 123456# 从库数据源slave:#名称可以⾃定义,但是要记得代码⾥保持⼀致enabled: true#这属性不是必须的,但是建议加上,⽅便切换url: jdbc:mysql://localhost:3306/dbusername: rootpassword: 1234562.在DataSourceType类添加数据源枚举public enum DataSourceType{MASTER,SLAVE //和druid.yml⽂件⾥保持⼀致}3.在DruidConfig配置读取数据源@Bean@ConfigurationProperties("spring.datasource.druid.slave")@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")public DataSource slaveDataSource(DruidProperties druidProperties){DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return druidProperties.dataSource(dataSource);}4.在DruidConfig类dataSource⽅法添加数据源@Bean(name = "dynamicDataSource")@Primarypublic DynamicDataSource dataSource(DataSource masterDataSource){Map<Object, Object> targetDataSources = new HashMap<>();targetDataSources.put((), masterDataSource);setDataSource(targetDataSources, (), "slaveDataSource");return new DynamicDataSource(masterDataSource, targetDataSources);}5.在需要使⽤多数据源⽅法或类上添加@DataSource注解,其中value⽤来表⽰数据源@Service@DataSource(value = DataSourceType.SLAVE)public class SysUserServiceImpl{// 优先级:先⽅法,后类,如果⽅法覆盖了类上的数据源类型,以⽅法的为准,否则以类上的为准@Service@DataSource(value = DataSourceType.MASTER)public List<SysUser> selectUserList(SysUser user){...}}。

SpringBoot配置Druid三种方式(包括纯配置文件配置)

SpringBoot配置Druid三种方式(包括纯配置文件配置)

SpringBoot配置Druid三种⽅式(包括纯配置⽂件配置)记录⼀下在项⽬中⽤纯 YML(application.yml 或者 application.properties)⽂件、Java 代码配置 Bean 和注解三种⽅式配置 Alibaba Druid ⽤于监控或者查看 SQL 状况:1. 纯配置⽂件 .yml 或者 .properties(1)pom.xml 添加相关依赖<!-- SPRINGBOOT WEB --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SPRINGBOOT DRUID --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- SPRINGBOOT JDBC --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- MYSQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>${mysql-connector-java.version}</scope></dependency><!-- LOG4J --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version><scope>compile</scope></dependency>(2)配置application.yml 或者 application.properties ⽂件,本次配置⽂件为application.ymlspring:# 数据源配置datasource:type: com.alibaba.druid.pool.DruidDataSource # MYSQL 5 驱动:com.mysql.jdbc.Driver,MYSQL 6+ 驱动:com.mysql.cj.jdbc.Driverdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: 123456# 连接池配置druid:# 初始化⼤⼩,最⼩,最⼤initial-size: 5min-idle: 5max-active: 20# 配置获取连接等待超时的时间max-wait: 60000# 配置间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位毫秒time-between-eviction-runs-millis: 60000# 配置⼀个连接在池中最⼩⽣存时间min-evictable-idle-time-millis: 300000validation-query: SELECT 1 FROM sys_usertest-while-idle: truetest-on-borrow: falsetest-on-return: false# 打开 PSCache,并且指定每个连接上 PSCache 的⼤⼩pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的 Filter,去掉后监控界⾯ SQL ⽆法统计,wall ⽤于防⽕墙filters: stat,wall,log4j# 通过 connection-properties 属性打开 mergeSql 功能;慢 SQL 记录connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000# 配置 DruidStatFilterweb-stat-filter:enabled: trueurl-pattern: /*exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*# 配置 DruidStatViewServletstat-view-servlet:url-pattern: /druid/*# IP ⽩名单,没有配置或者为空,则允许所有访问allow: 127.0.0.1# IP ⿊名单,若⽩名单也存在,则优先使⽤deny: 192.168.31.253# 禁⽤ HTML 中 Reset All 按钮reset-enable: false# 登录⽤户名/密码login-username: rootlogin-password: 1232.Java 代码配置 Bean(1)pom.xml 依赖<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>(2)在配置⽂件 application.yml 中添加 Druid 配置spring:datasource:type: com.alibaba.druid.pool.DruidDataSource# 数据源的其他配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true# 配置监控统计拦截的 filters,去掉后监控界⾯ sql ⽆法统计,'wall'⽤于防⽕墙filters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500(3)添加 DruidConfig.java 配置⽂件import javax.servlet.Filter;import javax.servlet.Servlet;import javax.sql.DataSource;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;@Configurationpublic class DruidConfig {@Bean// 将所有前缀为spring.datasource下的配置项都加载DataSource中@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}@Beanpublic ServletRegistrationBean<Servlet> druidServlet() {// 进⾏ druid 监控的配置处理ServletRegistrationBean<Servlet> srb = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/**"); // ⽩名单srb.addInitParameter("allow", "127.0.0.1");// ⿊名单srb.addInitParameter("deny", "192.168.31.253");// ⽤户名srb.addInitParameter("loginUsername", "root");// 密码srb.addInitParameter("loginPassword", "root");// 是否可以重置数据源srb.addInitParameter("resetEnable", "false");return srb;}@Beanpublic FilterRegistrationBean<Filter> filterRegistrationBean() {FilterRegistrationBean<Filter> frb = new FilterRegistrationBean<>();frb.setFilter(new WebStatFilter());// 所有请求进⾏监控处理frb.addUrlPatterns("/*");// 排除名单frb.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");return frb;}}3.注解(1)pom.xml ⽂件中添加 Druid 依赖(同⽅式⼆)(2)配置⽂件添加信息(同⽅式⼆)(3)配置 WebServletimport javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import com.alibaba.druid.support.http.StatViewServlet;@WebServlet(urlPatterns = "/druid/*",initParams={@WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP⽩名单 (没有配置或者为空,则允许所有访问)@WebInitParam(name="deny",value="192.168.16.111"),// IP⿊名单 (存在共同时,deny优先于allow)@WebInitParam(name="loginUsername",value="admin"),// ⽤户名@WebInitParam(name="loginPassword",value="admin"),// 密码@WebInitParam(name="resetEnable",value="false")// 禁⽤HTML页⾯上的“Reset All”功能})public class DruidServlet extends StatViewServlet {private static final long serialVersionUID = 1L;}(4)配置 WebFilterimport javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;import com.alibaba.druid.support.http.WebStatFilter;@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",initParams={@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源})public class DruidFilter extends WebStatFilter {}(5)配置启动⽂件SpringBootApplication ⽤于扫描我们配置的类添加 @ServletComponentScan 注解进⾏扫描import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication@ServletComponentScan("com.uy.servlet")public class SpringBootApplication{public static void main(String[] args) {SpringApplication.run(SpringBootApplication.class, args); } }到此这篇关于SpringBoot配置 Druid 三种⽅式(包括纯配置⽂件配置)的⽂章就介绍到这了,更多相关SpringBoot配置 Druid内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

Druid数据库连接密码加密操作步骤

Druid数据库连接密码加密操作步骤

Druid数据库连接密码加密操作步骤1、⽣成publicKey和password找到maven资源库中druid的jar包,如:C:\Users\a\.m2\repository\com\alibaba\druid\1.1.6,其中a为⽤户名。

打开cmd,将路径切换⾄C:\Users\a\.m2\repository\com\alibaba\druid\1.1.6后运⾏命令:java -cp .\druid-1.1.6.jarcom.alibaba.druid.filter.config.ConfigTools pass@word1 (此为数据库实际密码)打开application.yml⽂件,将druid下的password的值替换为上⾯的password的值,再新增⼀个publicKey的属性,并赋予上⾯得到的值2、修改web项⽬下config⽂件夹下DruidDataSourceConfigurer⽂件,dataSource⽅法中增加四句代码(Properties 引⼊ import java.util.Properties;)public DruidDataSource dataSource() throws SQLException {DruidDataSource dataSource = new DruidDataSource();dataSource.setProxyFilters(Lists.newArrayList(statFilter(),configFilter()));Properties properties=new Properties();properties.setProperty("config.decrypt","true");properties.setProperty("config.decrypt.key",publicKey);dataSource.setConnectProperties(properties);return dataSource;}类中增加类变量(@Value 引⼊ import org.springframework.beans.factory.annotation.Value;)@Value("${spring.druid.publicKey}")private String publicKey;类中增加⽅法/*** 定义空Config类⽤于加密类的加载* */@Beanpublic ConfigFilter configFilter(){ConfigFilter configFilter=new ConfigFilter();return configFilter;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档