Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

SpringBoot (12): integrated Druid

2025-02-23 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)06/01 Report--

Add dependencies

Org.mybatis.spring.boot mybatis-spring-boot-starter 1.2.0 mysql mysql-connector-java runtime com.alibaba druid 1.0.26

2. Configure application.properties

# # mysql data Source configuration # # 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 connection Pooled spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

Note: in fact, it can be used normally at this point, but if you want to use many properties in druid, you need to add supporting classes

Add the supporting classes of druid

Package com.example.demo.utils.configuration.druid;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DatabaseDriver;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.alibaba.druid.pool.DruidDataSource / * * druid support class * @ Author: I love Dajin * @ Description: druid support class * @ Date: Created in 12:48 2017-6-20 * / @ Configurationpublic class DruidConfiguration {@ ConditionalOnClass (DruidDataSource.class) @ ConditionalOnProperty (name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource" MatchIfMissing = true) static class Druid extends DruidConfiguration {@ Bean @ ConfigurationProperties ("spring.datasource.druid") public DruidDataSource dataSource (DataSourceProperties properties) {DruidDataSource druidDataSource = (DruidDataSource) properties.initializeDataSourceBuilder () .type (DruidDataSource.class) .build () DatabaseDriver databaseDriver = DatabaseDriver.fromJdbcUrl (properties.determineUrl ()); String validationQuery = databaseDriver.getValidationQuery (); if (validationQuery! = null) {druidDataSource.setValidationQuery (validationQuery);} return druidDataSource;}

Configure application.properties:

# # mysql data source configuration # # 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# initialization connection size spring.datasource.druid.initial-size=8# minimum number of idle connections spring.datasource.druid.min-idle=5# maximum number of connections spring.datasource.druid.max-active=10# query timeout spring.datasource.druid.query-timeout=6000# transaction query timeout spring.datasource.druid.transaction-query-timeout=6000# close idle connection timeout spring.datasource.druid.remove-abandoned-timeout=1800

IV. Monitoring

4.1.Configuring servlet

Package com.example.demo.utils.configuration.druid;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import com.alibaba.druid.support.http.StatViewServlet / * Monitoring-configure servlet * @ Author: I love Dajin * @ Description: monitoring-servlet * @ Date: Created in 12:50 2017-6-20 * / @ WebServlet (urlPatterns = {"/ druid/*"}, initParams = {@ WebInitParam (name = "loginUsername", value = "liuy"), @ WebInitParam (name = "loginPassword", value = "123456")}) public class DruidStatViewServlet extends StatViewServlet {private static final long serialVersionUID = 1L;}

4.2.Configuring filter

Package com.example.demo.utils.configuration.druid;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;import com.alibaba.druid.support.http.WebStatFilter / * Monitoring-configure filter * @ Author: I love Dajin * @ Description: description * @ Date: Created in 12:51 2017-6-20 * / @ WebFilter (filterName = "druidWebStatFilter", urlPatterns = "/ *", initParams = {@ WebInitParam (name = "exclusions", value = "* .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")}) public class DruidWebStatFilter extends WebStatFilter {}

Testing: accessing http://localhost:9090/druid/index.html

Note: there is no SQL monitoring or spring monitoring at this time.

4.3.Configuring sql monitoring and spring monitoring

Configure sql monitoring in the application.properties file

# sql monitoring configuration: filter class name: stat,config,encoding,loggingspring.datasource.druid.filters=stat

Spring Monitoring configuration

Step 1: create a new configuration file, such as druid-bean.xml

Com.example.demo.mapper.*

Step 2: load the druid-bean.xml file on the startup class

Package com.example.demo;import com.example.demo.utils.filter.CustomFilter;import com.example.demo.utils.listener.CustomListener;import com.example.demo.utils.servlet.CustomServlet;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.web.servlet.*;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ImportResource;import javax.servlet.DispatcherType;import javax.servlet.ServletContext;import javax.servlet.ServletException;import java.util.EnumSet @ ServletComponentScan@SpringBootApplication@ImportResource (locations = {"classpath:druid-bean.xml"}) public class SpringbootDemo27Application {public static void main (String [] args) {SpringApplication.run (SpringbootDemo27Application.class, args);}}

Restart the service with an exception:

Solution: add aop dependencies

Org.springframework.boot spring-boot-starter-aop

Restart the service

Another way of implementation

Package com.liuy.demo.configuration;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DatabaseDriver;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;import com.alibaba.druid.pool.DruidDataSource Import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter @ Configurationpublic class DruidConfiguration {@ ConditionalOnClass (DruidDataSource.class) @ ConditionalOnProperty (name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource", matchIfMissing = true) static class Druid extends DruidConfiguration {@ Bean @ ConfigurationProperties ("spring.datasource.druid") public DruidDataSource dataSource (DataSourceProperties properties) {DruidDataSource druidDataSource = (DruidDataSource) properties.initializeDataSourceBuilder (). Type (DruidDataSource.class). Build () DatabaseDriver databaseDriver = DatabaseDriver.fromJdbcUrl (properties.determineUrl ()); String validationQuery = databaseDriver.getValidationQuery (); if (validationQuery! = null) {druidDataSource.setValidationQuery (validationQuery);} return druidDataSource } @ Bean public ServletRegistrationBean statViewServlet () {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean (new StatViewServlet (), "/ druid/*"); / / IP whitelist servletRegistrationBean.addInitParameter ("allow", "127.0.0.1192.168.1.83") / / IP blacklist (priority is higher than whitelist) servletRegistrationBean.addInitParameter ("deny", "192.168.1.100"); / / console management user servletRegistrationBean.addInitParameter ("loginUsername", "liuy"); servletRegistrationBean.addInitParameter ("loginPassword", "123456") / / whether the data servletRegistrationBean.addInitParameter ("resetEnable", "false") can be reset; return servletRegistrationBean;} @ Bean public FilterRegistrationBean statFilter () {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean (new WebStatFilter ()) / / add filter rule filterRegistrationBean.addUrlPatterns ("/ *"); / / ignore filter format filterRegistrationBean.addInitParameter ("exclusions", "* .js,*.css,*.jpg,*.ico,/druid/*"); return filterRegistrationBean;}}

Application.properties:

Spring.profiles.active=devserver.port=9090##mysql data Source configuration # # 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 connection pool spring.datasource.type=com.alibaba.druid.pool.DruidDataSource# initialization size Minimum, maximum spring.datasource.druid.initial-size=5spring.datasource.druid.minIdle=5spring.datasource.druid.maxActive=20# get connection wait time out (milliseconds) how often is the spring.datasource.druid.max-wait=60000# detected Detect idle connections that need to be closed (milliseconds) spring.datasource.druid.time-between-eviction-runs-millis=60000# minimum lifetime of a connection in the pool (milliseconds) spring.datasource.druid.min-evictable-idle-time-millis=300000spring.datasource.druid.validation-query=SELECT 1 FROM DUALspring.datasource.druid.test-while-idle=truespring.datasource.druid.test-on-borrow=falsespring.datasource.druid.test-on-return=false# open PSCache And specify the size of the PSCache on each connection spring.datasource.druid.pool-prepared-statements=truespring.datasource.druid.max-pool-prepared-statement-per-connection-size=20# query timeout spring.datasource.druid.query-timeout=6000# transaction query timeout spring.datasource.druid.transaction-query-timeout=6000# close idle connection timeout spring.datasource.druid.remove-abandoned-timeout=1800# sql monitoring configuration: filter class name: stat,config,encoding Loggingspring.datasource.druid.filters=stat# turns on the mergesql function through the connect-properties property Slow query record spring.datasource.druid.connect-properties.druid.stat.meergeSql=true Spring.datasource.druid.connect-properties.druid.stat.slowSqlMillis=5000# merges monitoring data of multiple druidDataSource # spring.datasource.druid.use-global-data-source-stat=true##mybatis is integrated based on xml # # sweep package Mybatis.mapper-locations: classpath:mybatis/*.xml# alias mybatis.type-aliases-package: com.liuy.demo.pojo

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report