当前位置:   article > 正文

SpringBoot之druid数据源_druid github

druid github

自定义druid数据配置源

1、导入pom依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.17</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

2、编写配置类
通过localhost:8081/druid访问druid来监控http://localhost:8081/getCount请求

@Configuration
public class MyConfig {

    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource myDataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();
        //绑定SQL监控和SQL防火墙功能已经开启日志
//        druidDataSource.setFilters("stat, wall, log4j");
//        druidDataSource.setUrl();
        return new DruidDataSource();
    }
    /**
     * 配置druid的监控页功能
     **/
    @Bean
    public ServletRegistrationBean statViewServlet(){
        StatViewServlet viewServlet = new StatViewServlet();
        //通过http://localhost:8081/druid访问druid
        ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean(viewServlet, "/druid/*");
//        //加入druid登录账号和密码
//        registrationBean.addInitParameter("loginUsername", "123");
//        registrationBean.addInitParameter("loginPassword", "123");
        return registrationBean;
    }

    /**
     * 配置druid的web应用功能
     **/
    @Bean
    public FilterRegistrationBean webStatFilter(){
        WebStatFilter webStatFilter = new WebStatFilter();
        FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean(webStatFilter);
        //拦截所有请求
        registrationBean.setUrlPatterns(Arrays.asList("/*"));
        //排除某些请求
        registrationBean.addInitParameter("exclusions", "*.js, *.css, /druid/*");
        return registrationBean;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

通过源码可知数据库连接池的配置,是自己容器中没有DataSource才自动配置的,底层配置好的连接池是:HikariDataSource

	@Configuration(proxyBeanMethods = false)
	@Conditional(PooledDataSourceCondition.class)
	@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
	@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
			DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
			DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
	protected static class PooledDataSourceConfiguration
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、通过@ConfigurationProperties注解配置类的数据源会覆盖原有jdbc数据源,也可以通过在配置类中druidDataSource.setUrl()等方法来配置账号密码地址等

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    password: root
    url: jdbc:mysql://127.0.0.1:3306/bbb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true
    username: root
    filters: stat, wall, log4j
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、请求路径

@Controller
public class UserController {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @ResponseBody
    @RequestMapping(value = "/getCount", method = RequestMethod.GET)
    public String getCount(){
        Long l = jdbcTemplate.queryForObject("select count(*) from t_book", Long.class);
        return l.toString();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

实现图如下
在这里插入图片描述
druid官方github地址
https://github.com/alibaba/druid

start整合druid数据源

1、导入pom依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.17</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

自动配置项 DruidDataSourceAutoConfigure源码

@Configuration
@ConditionalOnClass({DruidDataSource.class})
@AutoConfigureBefore({DataSourceAutoConfiguration.class})
@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})
public class DruidDataSourceAutoConfigure
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

● DruidStatProperties.class,通过spring.datasource.druid与yaml配置文件绑定
在这里插入图片描述
● DataSourceProperties.class,通过spring.datasource与yaml配置文件绑定
在这里插入图片描述
● DruidSpringAopConfiguration.class, 监控SpringBean的;配置项:spring.datasource.druid.aop-patterns
● DruidStatViewServletConfiguration.class, 监控页的配置:spring.datasource.druid.stat-view-servlet;
● DruidWebStatFilterConfiguration.class, web监控配置;spring.datasource.druid.web-stat-filter;
● DruidFilterConfiguration.class}) 所有Druid自己filter的配置
在这里插入图片描述

2、yaml配置

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    password: admin
    url: jdbc:mysql://127.0.0.1:3306/bbb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true
    username: 123456
    filters: stat, wall
    druid:
      filters: stat,wall                  #底层开启功能,stat(sql监控),wall(防火墙)
      filter:                             #对上面filters里面的属性的详细配置
        stat:
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false
      aop-patterns: com.example.demo.*    #监控SpringBean
      stat-view-servlet:                  #配置监控页功能
        login-username: 123
        login-password: 123
        enabled: true
        reset-enable: false
      web-stat-filter:                    #监控web
        enabled: true
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
        url-pattern: /*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

3、请求路径

@Controller
public class UserController {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @ResponseBody
    @RequestMapping(value = "/getCount", method = RequestMethod.GET)
    public String getCount(){
        Long l = jdbcTemplate.queryForObject("select count(*) from t_book", Long.class);
        return l.toString();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

SpringBoot配置示例
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

配置项列表https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46521?site
推荐阅读
相关标签
  

闽ICP备14008679号