idea中springboot添加alibaba数据源

直接切入正题,

第一步添加相关依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.0.23</version>
</dependency>

当然还不能缺少jdbc、mysql、mybatis等相关依赖

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.2</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

第二步在yml中添加配置,具体参数可以参照官网

spring:
  datasource:
#    原因是因为MySQL版本过高,MySQL升级到8.0及以上,添加了许多新特性,安全性也得到提升。
#     当然操作时也增加了些繁琐,需要考虑到的时区问题便是其中之一。
    #解决办法:
    #a.url 部分加上 serverTimezone=UTC
    # b.url 部分加上 serverTimezone=Asia/Shanghai
    # c.或者在url路径的问号后面加上:useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC,也可以解决问题.
    url: jdbc:mysql://127.0.0.1:3306/worter?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: tiger
    #  com.mysql.jdbc.Driver 已经被废弃  要用com.mysql.cj.jdbc.Driver,此类可以被自动加载不用手动加载
#    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #  数据源其他配置
#    初始化数量
    initialSize : 5
    #通过connectionProperties属性来打开mergeSql功能;慢SQL记录
    #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    minIdle: 5
#    最大活跃线程
    maxActive: 20
    #最大连接等待超时时间
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validaionQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #    配置监控统计拦截的filters 去掉后监控界面sql无法统计,‘wall’用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true,druid.stat.slowSqlMills=500

虽然我们配置了druid连接池的其它属性,但是不会生效。因为默认是使用的java.sql.Datasource的类来获取属性的,有些属性datasource没有。如果我们想让配置生效,需要手动创建Druid的配置文件。

第三步

接下来我们实现开启监控功能。实现数据库的各个方面的监控及数据统计,方便我们进行数据库的优化。

我们来实现Druid的访问Servlet和Filter。

在项目根目录新建DruidConfiguration类。


import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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;

//数据源监控配置
@Configuration
public class DruidConfiguration {
//虽然我们配置了druid连接池的其它属性,但是不会生效。因为默认是使用的java.sql.Datasource的类来获取属性的,
// 有些属性datasource没有。如果我们想让配置生效,需要手动创建Druid的配置文件。
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DruidDataSource druidDataSource(){
        return new DruidDataSource();
    }
    @Bean
    public ServletRegistrationBean statViewServlet(){
        //创建servlet注册实体
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //设置ip白名单
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
        servletRegistrationBean.addInitParameter("deny","192.168.0.19");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","123123");
        //是否可以重置数据
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean statFilter(){
        //创建过滤器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //设置过滤器过滤路径
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略过滤的形式
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

Druid的最强大之处在于它有着强大的监控,可以监控我们发送到数据库的所有sql语句。方便我们后期排插错误。

配置完成之后我们启动SpringBoot程序访问:

http://localhost:8080/druid/ 就可以来到我们的登录页面面就是我们上面在DruidConfiguration中添加的控制台管理用户,我们可以在上面很好的看到运行状况。

然后可以找几个访问数据源的操作,之后在sql监控菜单查看

 

菜单中很多功能还不太会用~~ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章