阿里druid数据库整合springboot

1.Maven

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.17</version>
</dependency>

如图,application.yml中的内容为指定了运行环境为:druid环境,这时启动项目就会去加载application-druid.yml文件。
这里写图片描述

2.添加配置application-druid.yml

  • JDBC 配置
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://192.168.x.106:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: 111111
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password:   
  • 连接池配置
			# 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
  • 监控配置
			# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
            webStatFilter: 
                enabled: true
            # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
            statViewServlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码,localhost/monitor/druid,必须是一致的
                login-username: 
                login-password: 
            
  • 配置filter
			filter:
				# 配置StatFilter 
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                # 配置WallFilter 
                wall:
                    # 多条sql一起执行
                    config:
                        multi-statement-allow: true

数据库配置类

  •   @ConfigurationProperties("spring.datasource.druid.master")//springboot相关属性
    
  • 注意,参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值
  •   @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
    
  • @ConditionalOnProperty
  • (prefix = “spring.datasource.druid.slave”, name = “enabled”, havingValue = “true”)
  • 寻找spring.datasource.druid.slave,havingValue = “true”表示只有值为true的时候,才会执行
  •   @Value("${spring.datasource.druid.initialSize}")
      private int initialSize;
    
  • 可以看得value注解的使用方式:@Value("${spring.datasource.druid.initialSize}"),这个时候就会把配置文件里的spring.datasource.druid.initialSize的值赋值给变量initialSize
  • 可以预测到,这是在application.yml中写了druid环境启动项目后页面的内容
  •   @Bean(name = "dynamicDataSource")
    
  • 也可以通过SpringUtils.getBean(beanName)得到
  • 通过spring注入,就能在上下文得到
  • 不加名字,则方法名就是bean的名字

创建数据源

	@Bean//通过spring注入,就能在上下文得到
    @ConfigurationProperties("spring.datasource.druid.master")//springboot相关属性
    public DataSource masterDataSource(DruidProperties druidProperties)
    {
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        return druidProperties.dataSource(dataSource);
    }

    @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);
    }
    
	@Bean(name = "dynamicDataSource")
    @Primary
    public DynamicDataSource dataSource(DataSource masterDataSource)
    {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
        setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
        return new DynamicDataSource(masterDataSource, targetDataSources);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,对于使用Druid连接池的Spring Boot应用程序,您需要在启动类中进行以下配置: 1.引入Druid依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ``` 2.配置数据源 在application.properties或application.yml中添加以下配置: ```yaml spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3.配置Druid连接池 在启动类中添加以下代码: ```java @Configuration public class DruidConfig { @Bean public ServletRegistrationBean druidServlet() { return new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); } @Bean public FilterRegistrationBean druidFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } @Bean(initMethod = "init", destroyMethod = "close") public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("root"); dataSource.setPassword("123456"); dataSource.setMaxActive(20); dataSource.setInitialSize(1); return dataSource; } } ``` 以上代码中,我们配置了Druid的Servlet和Filter,并且创建了一个Druid连接池的DataSource。 注意:以上代码中的url、username和password需要根据您的实际情况进行修改。 希望这能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值