广告
返回顶部
首页 > 资讯 > 数据库 >springboot 中 druid+jpa+MYSQL数据库配置过程
  • 932
分享到

springboot 中 druid+jpa+MYSQL数据库配置过程

2024-04-02 19:04:59 932人浏览 安东尼
摘要

Druid来自于阿里的一个开源连接池能够提供强大的监控和扩展功能,Spring Boot默认不支持Druid和jpa,需要引入依赖。 1、引入依赖包 <!--druid--

Druid来自于阿里的一个开源连接池能够提供强大的监控和扩展功能,Spring Boot默认不支持Druid和jpa,需要引入依赖。

1、引入依赖包


<!--druid-->
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.22</version>
    </dependency>
 
<!--jpa-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

2、配置application.properties


#druid配置-Mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.passWord=123456
 
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.maxActive=20
spring.datasource.minIdle=5
# 配置获取连接等待超时的时间
spring.datasource.max-wait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.time-between-eviction-runs-millis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.min-evictable-idle-time-millis=300000
#检测连接是否有效的sql,要求是一个查询语句,常用select 'x'.如果validationQuery为null,testOnBorrow,testOnBorrow,testOnReturn,testWhileIdle都不会起作用。这个可以不配置
spring.datasource.validation-query=SELECT 'x'
#检测连接是否有效的超时时间。
spring.datasource.validation-query-timeout=60000
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=false
spring.datasource.test-on-return=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.pool-prepared-statements=true
spring.datasource.max-pool-prepared-statement-per-connection-size=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,#别名方式,扩展插件,监控统计用的filter:stat,日志用的filter:log4j,防御sql注入的filter:wall
spring.datasource.filters=stat,wall,slf4j

3、Druid配置信息定制


@Configuration
public class DruidConfig {
    @Autowired
    private DruidDataSourceProperties properties;
 
    @Bean(name = "druidDataSource", initMethod = "init", destroyMethod = "close")
    @Qualifier("druidDataSource")
    public DataSource dataSource() throws Exception {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(properties.getUrl());
        druidDataSource.setUsername(properties.getUsername());
        druidDataSource.setPassword(properties.getPassword());
        druidDataSource.setDriverClassName(properties.getDriverClassName());
        druidDataSource.setInitialSize(properties.getInitialSize());
        druidDataSource.setMaxActive(properties.getMaxActive());
        druidDataSource.setMinIdle(properties.getMinIdle());
        druidDataSource.setMaxWait(properties.getMaxWait());
        druidDataSource.setTimeBetweenEvictionRunsMillis(properties
                .getTimeBetweenEvictionRunsMillis());
        druidDataSource.setMinEvictableIdleTimeMillis(properties
                .getMinEvictableIdleTimeMillis());
        druidDataSource.setValidationQuery(properties.getValidationQuery());
        druidDataSource.setTestWhileIdle(properties.isTestWhileIdle());
        druidDataSource.setTestOnBorrow(properties.isTestOnBorrow());
        druidDataSource.setTestOnReturn(properties.isTestOnReturn());
        druidDataSource.setPoolPreparedStatements(properties
                .isPoolPreparedStatements());
        druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(properties
                .getMaxPoolPreparedStatementPerConnectionSize());
        druidDataSource.setFilters(properties.getFilters());
 
        try {
            if (null != druidDataSource) {
                druidDataSource.setFilters("wall,stat");
                druidDataSource.setUseGlobalDataSourceStat(true);
//                Properties properties = new Properties();
//                properties.setProperty("decrypt", "true");
//                druidDataSource.setConnectProperties(properties);
                druidDataSource.init();
            }
        } catch (Exception e) {
            throw new RuntimeException(
                    "load datasource error, dbProperties is :", e);
        }
        return druidDataSource;
    }
}

3、获取Properties中配置信息


@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DruidDataSourceProperties {
	
	private String url;
 
	private String username;
 
	private String password;
 
	private String driverClassName;
 
	private int initialSize;
 
	private int maxActive;
 
	private int minIdle;
 
	private int maxWait;
 
	private long timeBetweenEvictionRunsMillis;
 
	private long minEvictableIdleTimeMillis;
 
	private String validationQuery;
 
	private boolean testWhileIdle;
 
	private boolean testOnBorrow;
 
	private boolean testOnReturn;
 
	private boolean poolPreparedStatements;
 
	private int maxPoolPreparedStatementPerConnectionSize;
 
	private String filters;
 
	public String getUrl() {
		return url;
	}
 
	public void setUrl(String url) {
		this.url = url;
	}
 
	public String getUsername() {
		return username;
	}
 
	public void setUsername(String username) {
		this.username = username;
	}
 
	public String getPassword() {
		return password;
	}
 
	public void setPassword(String password) {
		this.password = password;
	}
 
	public String getDriverClassName() {
		return driverClassName;
	}
 
	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}
 
	public int getInitialSize() {
		return initialSize;
	}
 
	public void setInitialSize(int initialSize) {
		this.initialSize = initialSize;
	}
 
	public int getMaxActive() {
		return maxActive;
	}
 
	public void setMaxActive(int maxActive) {
		this.maxActive = maxActive;
	}
 
	public int getMinIdle() {
		return minIdle;
	}
 
	public void setMinIdle(int minIdle) {
		this.minIdle = minIdle;
	}
 
	public int getMaxWait() {
		return maxWait;
	}
 
	public void setMaxWait(int maxWait) {
		this.maxWait = maxWait;
	}
 
	public long getTimeBetweenEvictionRunsMillis() {
		return timeBetweenEvictionRunsMillis;
	}
 
	public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
		this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
	}
 
	public long getMinEvictableIdleTimeMillis() {
		return minEvictableIdleTimeMillis;
	}
 
	public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
		this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
	}
 
	public String getValidationQuery() {
		return validationQuery;
	}
 
	public void setValidationQuery(String validationQuery) {
		this.validationQuery = validationQuery;
	}
 
	public boolean isTestWhileIdle() {
		return testWhileIdle;
	}
 
	public void setTestWhileIdle(boolean testWhileIdle) {
		this.testWhileIdle = testWhileIdle;
	}
 
	public boolean isTestOnBorrow() {
		return testOnBorrow;
	}
 
	public void setTestOnBorrow(boolean testOnBorrow) {
		this.testOnBorrow = testOnBorrow;
	}
 
	public boolean isTestOnReturn() {
		return testOnReturn;
	}
 
	public void setTestOnReturn(boolean testOnReturn) {
		this.testOnReturn = testOnReturn;
	}
 
	public boolean isPoolPreparedStatements() {
		return poolPreparedStatements;
	}
 
	public void setPoolPreparedStatements(boolean poolPreparedStatements) {
		this.poolPreparedStatements = poolPreparedStatements;
	}
 
	public int getMaxPoolPreparedStatementPerConnectionSize() {
		return maxPoolPreparedStatementPerConnectionSize;
	}
 
	public void setMaxPoolPreparedStatementPerConnectionSize(
			int maxPoolPreparedStatementPerConnectionSize) {
		this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
	}
 
	public String getFilters() {
		return filters;
	}
 
	public void setFilters(String filters) {
		this.filters = filters;
	}
 
	public DruidDataSourceProperties() {
		// TODO Auto-generated constructor stub
	}
 
	public DruidDataSourceProperties(String url, String username,
									 String password, String driverClassName, int initialSize,
									 int maxActive, int minIdle, int maxWait,
									 long timeBetweenEvictionRunsMillis,
									 long minEvictableIdleTimeMillis, String validationQuery,
									 boolean testWhileIdle, boolean testOnBorrow, boolean testOnReturn,
									 boolean poolPreparedStatements,
									 int maxPoolPreparedStatementPerConnectionSize, String filters) {
		this.url = url;
		this.username = username;
		this.password = password;
		this.driverClassName = driverClassName;
		this.initialSize = initialSize;
		this.maxActive = maxActive;
		this.minIdle = minIdle;
		this.maxWait = maxWait;
		this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
		this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
		this.validationQuery = validationQuery;
		this.testWhileIdle = testWhileIdle;
		this.testOnBorrow = testOnBorrow;
		this.testOnReturn = testOnReturn;
		this.poolPreparedStatements = poolPreparedStatements;
		this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
		this.filters = filters;
	}
	
}

如果需要Druid的监控统计功能在配置代码中加入以下代码:


@Bean
	public ServletReGIStrationBean druidServlet() {
		ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid
    @Bean(name = "entityManagerFactory")
    @Primary
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(druidDataSource)
                .properties(getVendorProperties(druidDataSource))
                .packages("*.entity")//指定需要扫描的entity所在包
                .build();
    }
 
    
    private Map<String, String> getVendorProperties(DataSource dataSource) {
        Map<String, String> map = jpaProperties.getProperties();
        map.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
        map.put("hibernate.show_sql", "true");
        return map;
    }
 
    
    @Bean(name = "transactionManager")
    @Primary
    PlatfORMTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactory(builder).getObject());
    }
 
}

到此这篇关于SpringBoot 中 druid+jpa+MYSQL数据库配置的文章就介绍到这了,更多相关springboot druid+jpa+MYSQL配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: springboot 中 druid+jpa+MYSQL数据库配置过程

本文链接: https://www.lsjlt.com/news/131677.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot 中 druid+jpa+MYSQL数据库配置过程
    Druid来自于阿里的一个开源连接池能够提供强大的监控和扩展功能,Spring Boot默认不支持Druid和jpa,需要引入依赖。 1、引入依赖包 <!--druid--...
    99+
    2022-11-12
  • springboot 中怎么配置DRUID数据源
    本篇文章为大家展示了springboot 中怎么配置DRUID数据源,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.修改pom.xml<dependency>  &...
    99+
    2023-06-02
  • springboot mybatis druid配置多数据源教程
    目录1、项目代码结构2、导入基本依赖3、配置多数据源4、配置类5、启动类6、测试使用的表7、测试表对应的实体类8、持久层:dao层接口1、项目代码结构 2、导入基本依赖 记得需要导...
    99+
    2022-11-12
  • SpringBoot中Mybatis + Druid 数据访问的详细过程
    目录1、简介2、JDBC3、CRUD操作4、自定义数据源 DruidDataSource1、配置 Druid 数据源监控2、配置 Druid web 监控 filter5、Sprin...
    99+
    2022-11-12
  • Springboot整合JPA配置多数据源流程详解
    目录1. Maven2. 基本配置DataSource3. 多数据源配置3.1 JpaConfigOracle3.2 JpaConfigMysql4. Dao层接口1. Maven ...
    99+
    2022-11-21
    Springboot整合JPA配置多数据源 Springboot多数据源
  • MySQL数据库时区的配置过程
    本篇内容主要讲解“MySQL数据库时区的配置过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库时区的配置过程”吧! ...
    99+
    2022-10-18
  • django配置使用mysql数据库过程
    修改项目下setting.py文件下,DATABASES字典中的default字典中的内容:DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlit...
    99+
    2023-06-01
  • SpringBoot中Mybatis+Druid数据访问过程是怎样的
    本篇内容主要讲解“SpringBoot中Mybatis+Druid数据访问过程是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中Mybatis+Druid数据访问过程是...
    99+
    2023-06-25
  • springboot中如何利用mybatis+druid配置动态数据源
    这篇“springboot中如何利用mybatis+druid配置动态数据源”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“s...
    99+
    2023-06-08
  • zabbix配置监控MySQL数据库的过程
    本篇内容介绍了“zabbix配置监控MySQL数据库的过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-18
  • Springboot2.0配置JPA多数据源连接两个mysql数据库方式
    目录1. 目录结构及配置2. 配置文件3. DataSourceConfigurer类4. 主数据源配置5. 从数据源配置6.User实体类模板7.dao层模板8.service模板...
    99+
    2022-11-12
  • SpringBoot多数据源配置的全过程记录
    目录前言 配置文件 依赖 构建 AbstractRoutingDataSource 数据源切换 目录 总结 前言 多数据源的核心就是向 IOC 容器注入 AbstractRouti...
    99+
    2022-11-12
  • SpringBoot多数据源配置的过程是什么
    本篇内容主要讲解“SpringBoot多数据源配置的过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot多数据源配置的过程是什么”吧!前言多数据源的核心就是向 IOC 容...
    99+
    2023-06-25
  • springboot配置mysql数据库spring.datasource.url报错的解决
    目录springboot配置mysql数据库spring.datasource.url报错springboot下datasource连接配置基本设置datasourceJPAjooq...
    99+
    2022-11-12
  • 【MySQL数据库】最全安装过程及配置详解
    🧛‍♂️iecne个人主页::iecne的学习日志 💡每天关注iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀...
    99+
    2023-08-16
    mysql 数据库 服务器
  • Django配置MySQL数据库教程
    简介   在实际生产环境,Django是不可能使用SQLite这种轻量级的基于文件的数据库作为生产数据库。一般较多的会选择MySQL。如果使用SQLite这种轻量级的数据库不需要手动配置。 一、安装Python访问MySQL的模块   在 ...
    99+
    2018-12-25
    Django配置MySQL数据库教程 数据库入门 数据库基础教程
  • Springboot项目中内嵌sqlite数据库的配置流程
    目录Springboot中内嵌sqlite数据库配置在idea中配置Sqlitespringboot环境下配置使用sqlite数据库pom文件导入mybatis和sqlite依赖ap...
    99+
    2022-11-13
  • 阿里云配置MySQL数据库教程
    本篇文章将详细介绍如何在阿里云上配置MySQL数据库。首先,我们将创建一个阿里云账户并注册一个实例。然后,我们将设置数据库实例的安全组和网络规则,以确保安全访问。接着,我们将安装并配置MySQL服务器,包括设置数据库服务器的用户名、密码和权...
    99+
    2023-11-18
    阿里 数据库 教程
  • SpringBoot配置使用H2数据库的简单教程
    目录如何操作 依赖yml配置生成内存数据库H2 第一种: 第二种 持久化 如何操作 依赖 <dependency> <groupId>org.s...
    99+
    2022-11-12
  • windows中配置安装mysql数据库
      MySql 是一种免费的关系型数据库,相较于 MsSqlServer 和 Oracle 比较轻量化,安装也很简单,而且免费不需要的版权费用,个人认为一般的小项目采用还是比较合适的,当然也有部分数据量很大的项目会采用 MySql...
    99+
    2014-10-27
    windows中配置安装mysql数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作