• ADADADADAD

    springBoot(12):集成Druid[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:56:32

    作者:文/会员上传

    简介:

    一、添加依赖<!--mybatis-开始--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、添加依赖

    <!--mybatis-开始--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.26</version></dependency><!--mybatis-结束-->

    二、配置application.properties

    ##################################mysql数据源配置##################################spring.datasource.url=jdbc:mysql://localhost/db_test?useUnicode=true&characterEncoding=utf-8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#druid连接池spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

    注意:其实到这里就可以正常使用了,但是如果想使用druid里的诸多属性,则需要添加支持类

    三、添加druid的支持类

    packagecom.example.demo.utils.configuration.druid;importorg.springframework.boot.autoconfigure.condition.ConditionalOnClass;importorg.springframework.boot.autoconfigure.condition.ConditionalOnProperty;importorg.springframework.boot.autoconfigure.jdbc.DataSourceProperties;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.boot.jdbc.DatabaseDriver;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcom.alibaba.druid.pool.DruidDataSource;/***druid的支持类*@Author:我爱大金子*@Description:druid的支持类*@Date:Createdin12:482017/6/20*/@ConfigurationpublicclassDruidConfiguration{@ConditionalOnClass(DruidDataSource.class)@ConditionalOnProperty(name="spring.datasource.type",havingValue="com.alibaba.druid.pool.DruidDataSource",matchIfMissing=true)staticclassDruidextendsDruidConfiguration{@Bean@ConfigurationProperties("spring.datasource.druid")publicDruidDataSourcedataSource(DataSourcePropertiesproperties){DruidDataSourcedruidDataSource=(DruidDataSource)properties.initializeDataSourceBuilder().type(DruidDataSource.class).build();DatabaseDriverdatabaseDriver=DatabaseDriver.fromJdbcUrl(properties.determineUrl());StringvalidationQuery=databaseDriver.getValidationQuery();if(validationQuery!=null){druidDataSource.setValidationQuery(validationQuery);}returndruidDataSource;}}}

    配置application.properties:

    ##################################mysql数据源配置##################################spring.datasource.url=jdbc:mysql://localhost/db_test?useUnicode=true&characterEncoding=utf-8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.type=com.alibaba.druid.pool.DruidDataSource#初始化连接大小spring.datasource.druid.initial-size=8#最小空闲连接数spring.datasource.druid.min-idle=5#最大连接数spring.datasource.druid.max-active=10#查询超时时间spring.datasource.druid.query-timeout=6000#事务查询超时时间spring.datasource.druid.transaction-query-timeout=6000#关闭空闲连接超时时间spring.datasource.druid.remove-abandoned-timeout=1800

    四、监控

    4.1、配置servlet

    packagecom.example.demo.utils.configuration.druid;importjavax.servlet.annotation.WebInitParam;importjavax.servlet.annotation.WebServlet;importcom.alibaba.druid.support.http.StatViewServlet;/***监控-配置servlet*@Author:我爱大金子*@Description:监控-servlet*@Date:Createdin12:502017/6/20*/@WebServlet(urlPatterns={"/druid/*"},initParams={@WebInitParam(name="loginUsername",value="liuy"),@WebInitParam(name="loginPassword",value="123456")})publicclassDruidStatViewServletextendsStatViewServlet{privatestaticfinallongserialVersionUID=1L;}

    4.2、配置filter

    packagecom.example.demo.utils.configuration.druid;importjavax.servlet.annotation.WebFilter;importjavax.servlet.annotation.WebInitParam;importcom.alibaba.druid.support.http.WebStatFilter;/***监控-配置filter*@Author:我爱大金子*@Description:描述*@Date:Createdin12:512017/6/20*/@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",initParams={@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")})publicclassDruidWebStatFilterextendsWebStatFilter{}

    测试:访问http://localhost:9090/druid/index.html

    注意:此时还没有SQL监控与spring监控。

    4.3、配置sql监控与spring监控

    在application.properties文件中配置sql监控

    #sql监控配置:filter类名:stat,config,encoding,loggingspring.datasource.druid.filters=stat

    spring监控配置

    第一步:新建一个配置文件,如:druid-bean.xml

    <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--配置_Druid和Spring关联监控配置--><beanid="druid-stat-interceptor"class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"></bean><!--方法名正则匹配拦截配置--><beanid="druid-stat-pointcut"class="org.springframework.aop.support.JdkRegexpMethodPointcut"scope="prototype"><propertyname="patterns"><list><value>com.example.demo.mapper.*</value></list></property></bean><aop:configproxy-target-class="true"><aop:advisoradvice-ref="druid-stat-interceptor"pointcut-ref="druid-stat-pointcut"/></aop:config></beans>

    第二步:在启动类上加载druid-bean.xml文件

    packagecom.example.demo;importcom.example.demo.utils.filter.CustomFilter;importcom.example.demo.utils.listener.CustomListener;importcom.example.demo.utils.servlet.CustomServlet;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.boot.web.servlet.*;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.ImportResource;importjavax.servlet.DispatcherType;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjava.util.EnumSet;@ServletComponentScan@SpringBootApplication@ImportResource(locations={"classpath:druid-bean.xml"})publicclassSpringbootDemo27Application{publicstaticvoidmain(String[]args){SpringApplication.run(SpringbootDemo27Application.class,args);}}

    重启服务,报异常:

    解决:添加aop依赖

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

    重启服务

    另一种实现方式

    packagecom.liuy.demo.configuration;importorg.springframework.boot.autoconfigure.condition.ConditionalOnClass;importorg.springframework.boot.autoconfigure.condition.ConditionalOnProperty;importorg.springframework.boot.autoconfigure.jdbc.DataSourceProperties;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.boot.jdbc.DatabaseDriver;importorg.springframework.boot.web.servlet.FilterRegistrationBean;importorg.springframework.boot.web.servlet.ServletRegistrationBean;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcom.alibaba.druid.pool.DruidDataSource;importcom.alibaba.druid.support.http.StatViewServlet;importcom.alibaba.druid.support.http.WebStatFilter;@ConfigurationpublicclassDruidConfiguration{@ConditionalOnClass(DruidDataSource.class)@ConditionalOnProperty(name="spring.datasource.type",havingValue="com.alibaba.druid.pool.DruidDataSource",matchIfMissing=true)staticclassDruidextendsDruidConfiguration{@Bean@ConfigurationProperties("spring.datasource.druid")publicDruidDataSourcedataSource(DataSourcePropertiesproperties){DruidDataSourcedruidDataSource=(DruidDataSource)properties.initializeDataSourceBuilder().type(DruidDataSource.class).build();DatabaseDriverdatabaseDriver=DatabaseDriver.fromJdbcUrl(properties.determineUrl());StringvalidationQuery=databaseDriver.getValidationQuery();if(validationQuery!=null){druidDataSource.setValidationQuery(validationQuery);}returndruidDataSource;}}@BeanpublicServletRegistrationBeanstatViewServlet(){ServletRegistrationBeanservletRegistrationBean=newServletRegistrationBean(newStatViewServlet(),"/druid/*");//IP白名单servletRegistrationBean.addInitParameter("allow","127.0.0.1,192.168.1.83");//IP黑名单(优先级高于白名单)servletRegistrationBean.addInitParameter("deny","192.168.1.100");//控制台管理用户servletRegistrationBean.addInitParameter("loginUsername","liuy");servletRegistrationBean.addInitParameter("loginPassword","123456");//是否能够重置数据servletRegistrationBean.addInitParameter("resetEnable","false");returnservletRegistrationBean;}@BeanpublicFilterRegistrationBeanstatFilter(){FilterRegistrationBeanfilterRegistrationBean=newFilterRegistrationBean(newWebStatFilter());//添加过滤规则filterRegistrationBean.addUrlPatterns("/*");//忽略过滤的格式filterRegistrationBean.addInitParameter("exclusions","*.js,*.css,*.jpg,*.ico,/druid/*");returnfilterRegistrationBean;}}

    application.properties:

    spring.profiles.active=devserver.port=9090##################################mysql数据源配置##################################spring.datasource.url=jdbc:mysql://localhost/db_test?useUnicode=true&characterEncoding=utf-8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#druid连接池spring.datasource.type=com.alibaba.druid.pool.DruidDataSource#初始化大小,最小,最大spring.datasource.druid.initial-size=5spring.datasource.druid.minIdle=5spring.datasource.druid.maxActive=20#获取连接等待超时的时间(毫秒)spring.datasource.druid.max-wait=60000#间隔多久进行一次检测,检测需要关闭的空闲连接(毫秒)spring.datasource.druid.time-between-eviction-runs-millis=60000#一个连接在池中的最小生存时间(毫秒)spring.datasource.druid.min-evictable-idle-time-millis=300000spring.datasource.druid.validation-query=SELECT1FROMDUALspring.datasource.druid.test-while-idle=truespring.datasource.druid.test-on-borrow=falsespring.datasource.druid.test-on-return=false#打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.druid.pool-prepared-statements=truespring.datasource.druid.max-pool-prepared-statement-per-connection-size=20#查询超时时间spring.datasource.druid.query-timeout=6000#事务查询超时时间spring.datasource.druid.transaction-query-timeout=6000#关闭空闲连接超时时间spring.datasource.druid.remove-abandoned-timeout=1800#sql监控配置:filter类名:stat,config,encoding,loggingspring.datasource.druid.filters=stat#通过connect-properties属性来打开mergesql功能;慢查询记录spring.datasource.druid.connect-properties.druid.stat.meergeSql=true;spring.datasource.druid.connect-properties.druid.stat.slowSqlMillis=5000#合并多个druidDataSource的监控数据#spring.datasource.druid.use-global-data-source-stat=true##################################mybatis基于xml集成###################################扫包mybatis.mapper-locations:classpath:mybatis/*.xml#别名mybatis.type-aliases-package:com.liuy.demo.pojo

    springBoot(12):集成Druid.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: Springbootdruid