基于SpringBoot 2.x使用Druid数据源

经典依赖:

<dependencies>
		<!--引入web模板-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>


		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.17</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.1</version>
		</dependency>
</dependencies>

经典全局配置文件:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: ****

使用一个测试方法 可以查询当前默认的数据源类型:

@Autowired
DataSource dataSource;

@Test
public  void contextLoads() {
    Class<? extends DataSource> aClass = this.dataSource.getClass();
		System.out.println(aClass);
		try {
			Connection connection = this.dataSource.getConnection();
			System.out.println(connection);
			connection.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

--------------------------------------------------------------------------------

 使用Druid数据:

新加依赖:

<!--引入druid数据源-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.20</version>
		</dependency>

新加全局配置文件:

type: com.alibaba.druid.pool.DruidDataSource

在全局配置文件中还可添加其他字段:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      max-pool-prepared-statement-per-connection-size: 20
      #用于SQL状态监控,stat代表状态,wall代表防火墙
      filters: stat,wall
      use-global-data-source-stat: true
      #通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        # 添加IP白名单
        #allow:
        # 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
        #deny:
      web-stat-filter:
        # 添加过滤规则
        url-pattern: /*
        # 忽略过滤格式
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

要使这些配置生效,需要编写DruidConfig类 举例如下:

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid() {
        return new DruidDataSource();
    }

    /**
     * 配置一个druid的监控
     * 1、配置一个druid的后台  管理servlet
     * 2、配置一个druid的filter
     */
    //1、配置一个druid的后台  管理servlet
    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        //注意,请求时 /druid/*
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String, String> initParm = new HashMap<>();
        //登陆页面账户与密码
        initParm.put(ResourceServlet.PARAM_NAME_USERNAME, "root");
        initParm.put(ResourceServlet.PARAM_NAME_PASSWORD, "123123");
        //监控后台 允许ip
        initParm.put(ResourceServlet.PARAM_NAME_ALLOW, "");
        //黑名单
        initParm.put(ResourceServlet.PARAM_NAME_DENY, "192.168.0.1");

        bean.setInitParameters(initParm);
        return bean;
    }

    //    2、配置一个druid的filter
    @Bean
    public FilterRegistrationBean webStatFilter() {
        FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
        bean.setFilter(new WebStatFilter());

        Map<String, String> initPrams = new HashMap<>();
        initPrams.put(WebStatFilter.PARAM_NAME_EXCLUSIONS, "*.js,*.css,/druid/*");
        bean.setInitParameters(initPrams);

        //设置拦截器请求
        bean.setUrlPatterns(Arrays.asList("/"));
        return bean;
    }
}

再次运行测试方法

打印的结果为:

浏览器访问   localhost:8080/druid/    

登录 用户(这里是   root   123123)后可以看到

成功进入druid后台管理页面

猜你喜欢

转载自blog.csdn.net/weixin_42633481/article/details/107670494