Druid连接池SpringBoot整合
为什么要用Druid不用springboot默认的?
因为Druid有监控sql的功能。
springboot默认的连接池比Druid性能高
springboot配置Druid分二步:
1.配置数据库及Druid属性·
2.配置Druid相关的类和过滤器【Filter】
数据库及Druid属性
#配置数据源相关,使用阿里巴巴的druid数据源 #dbType spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 #自定义数据源类型 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #连接池配置 spring.datasource.druid.initial-size=1 spring.datasource.druid.min-idle=1 spring.datasource.druid.max-active=30 # 开启哪些拦截器 stat:性能监控, wall: 防火墙控制 spring.datasource.druid.filters=stat,wall
Druid相关的类和过滤器【Filter】
1.数据源配置
package com.zhao.nettydemo.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.sql.SQLException; @Configuration public class DruidConfig { /** * 监控统计用的filter:stat WebStatFilter别名stat * 日志用的filter:log4j * 防御sql注入的filter:wall */ @Value("${spring.datasource.druid.filters}") private String filters; /** * destroyMethod = "close":bean销毁时执行DruidDataSource的close()方法 * initMethod = "init" bean的初始化时执行的DruidDataSource的init()方法 */ @Bean(destroyMethod = "close",initMethod = "init") @ConfigurationProperties(prefix = "spring.datasource") public DruidDataSource dataSource() throws SQLException { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setFilters(filters); return druidDataSource; } }
2.配置Web和Druid数据源之间的管理关联监控统计
package com.zhao.nettydemo.config; import com.alibaba.druid.support.http.WebStatFilter; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; /** * WebStatFilter类: 用于配置Web和Druid数据源之间的管理关联监控统计 * urlPatterns = "/*" 过滤所有 * name = "exclusions" value= 后面的不过滤 */ @WebFilter(filterName = "druidStatFilter", urlPatterns = "/*", asyncSupported = true, initParams = { @WebInitParam(name = "exclusions", value = "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/monitor/druid/*")//忽略资源 } ) public class DruidStatFilter extends WebStatFilter { }
3.配置监控信息页面
"allow", value = "" "deny", value = "" "loginUsername", value = "admin" druid的用户名
"loginPassword", value = "123456" druid的密码
deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。
如果allow没有配置或者为空,则允许所有访问
package com.zhao.nettydemo.config; import com.alibaba.druid.support.http.StatViewServlet; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; /** * StatViewServlet用于展示Druid的统计信息 * 用途包括: * 提供监控信息展示的html页面 * 提供监控信息的JSON API * url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是http://127.0.0.1:8080/monitor/druid/index.html * @WebServlet 注解用于标注在一个继承了HttpServlet类之上,属于类级别的注解。 */ @WebServlet(urlPatterns = "/monitor/druid/*", asyncSupported = true, initParams = { @WebInitParam(name = "allow", value = ""), @WebInitParam(name = "deny", value = ""), @WebInitParam(name = "loginUsername", value = "admin"), @WebInitParam(name = "loginPassword", value = "123456") }) public class DruidStatViewServlet extends StatViewServlet { }
启动类配置注解@ServletComponentScan
package com.zhao.nettydemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication // 扫描项目下面的 @WebFilter和 @WebServlet 也就是扫描过滤器和servlet配置类 @ServletComponentScan public class NettyDemoApplication { public static void main(String[] args) { SpringApplication.run(NettyDemoApplication.class, args); } }
依赖
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<!-- jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
如果不配置jdbc会出现:
Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType错误
访问
http://127.0.0.1:8080/monitor/druid/index.html页面【DruidStatViewServlet 类中配置的】
用户名:admin
密码:123456
Druid的各种页面存在于com.alibaba.druid.support 下
index.html页面存在于com.alibaba.druid.support.monitor.resources下

浙公网安备 33010602011771号