Druid est le meilleur pool de connexions de base de données du langage Java et peut fournir de puissantes fonctions de surveillance et d'extension. Ce qui suit explique comment configurer et utiliser Druid dans Spring Boot
La source de données par défaut de Spring Boot est : org.apache.tomcat.jdbc.pool.DataSource
Druid est le meilleur du langage Java Pool de connexions à la base de données et peut fournir de puissantes fonctions de surveillance et d'extension.
Ce qui suit explique comment configurer et utiliser Druid dans Spring Boot
(1) Ajouter une dépendance Maven (ou un package jar)
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency>
2), configurer la source de données Informations connexes
# 数据库访问配置 # 主数据源,默认的 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间 spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙 spring.datasource.filters=stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 #spring.datasource.useGlobalDataSourceStat=true
(3) Configurer la fonction de statistiques de surveillance
ConfigurerServlet
Ce qui suit est la configuration basée sur les annotations dans le projet SpringBoot , si configuration Web.xml, configurez simplement selon les règles.
DruidStatViewServlet :
import com.alibaba.druid.support.http.StatViewServlet; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; /** * druid数据源状态监控. * Created by winner_0715 on 2017/4/19. */ @WebServlet(urlPatterns = "/druid/*", initParams = { // IP白名单 (没有配置或者为空,则允许所有访问) @WebInitParam(name = "allow", value = "192.168.1.72,127.0.0.1"), // IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name = "deny", value = "192.168.1.73"), // 用户名 @WebInitParam(name = "loginUsername", value = "admin"), // 密码 @WebInitParam(name = "loginPassword", value = "123456"), // 禁用HTML页面上的“Reset All”功能 @WebInitParam(name = "resetEnable", value = "false") } ) public class DruidStatViewServlet extends StatViewServlet { private static final long serialVersionUID = 1L; } DruidStatFilter: import com.alibaba.druid.support.http.WebStatFilter; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; /** * druid过滤器. * Created by winner_0715 on 2017/4/19. */ @WebFilter(filterName = "druidWebStatFilter", urlPatterns = "/*", initParams = { // 忽略资源 @WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*") } ) public class DruidStatFilter extends WebStatFilter { }
Enfin, ajoutez des annotations à la classe de démarrage : @ServletComponentScan permet à Spring d'analyser les servlets et les filtres que nous avons écrits nous-mêmes.
Attention à ne pas oublier d'ajouter l'annotation @ServletComponentScan sur SpringBootSampleApplication.java, sinon ce sera 404.
Ensuite démarrez le projet et visitez 127.0.0.1:8080/druid/index.html pour afficher la source de données et les statistiques SQL, etc.
(4) Méthode 2 de configuration du système de surveillance :
La méthode de surveillance configurée ci-dessus utilise un servlet natif, une méthode de filtrage, [email protected]� Après traitement, vous constaterez que notre servlet et notre filtre n'ont aucun encodage.
Ici, nous allons utiliser une autre façon de le gérer : utilisez le code pour enregistrer le Servlet :
DruidConfiguration :
import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; 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; /** * 这样的方式不需要添加注解:@ServletComponentScan * Created by winner_0715 on 2017/4/19. */ @Configuration public class DruidConfiguration { /** * 注册一个StatViewServlet * * @return */ @Bean public ServletRegistrationBean DruidStatViewServle2() { //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册. ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid2/*"); //添加初始化参数:initParams //白名单: servletRegistrationBean.addInitParameter("allow", "127.0.0.1"); //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page. servletRegistrationBean.addInitParameter("deny", "192.168.1.73"); //登录查看信息的账号密码. servletRegistrationBean.addInitParameter("loginUsername", "admin2"); servletRegistrationBean.addInitParameter("loginPassword", "123456"); //是否能够重置数据. servletRegistrationBean.addInitParameter("resetEnable", "false"); return servletRegistrationBean; } /** * 注册一个:filterRegistrationBean * * @return */ @Bean public FilterRegistrationBean druidStatFilter2() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); //添加过滤规则. filterRegistrationBean.addUrlPatterns("/*"); //添加不需要忽略的格式信息. filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*"); return filterRegistrationBean; } }
Démarrez l'application et vous pourrez accéder à : 127.0.0.1 : 8080/druid2/index.html Entrez le numéro de compte et le mot de passe : admin2/123456 pour y accéder.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!