ssss如果想学好一门技术,当然要去看官方文档。Druid数据源的官方文档是:Druid数据源官方文档
整合第三方技术的两种方式:
sdsdsdsdsdssss①、 自定义 ssdsdsdsss②、 找starter
自定义方式引入Druid:
ssss①、引入Druid依赖
ssss②、 往容器中添加Druid 数据库连接池
@Configuration
public class MyDataSourceConfig {
//默认的自动配置是判断容器中没有才会配@ConditionalOnMissingBean({DataSource.class, XADataSource.class})
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
ssss③、开启监控统计功能和防火墙功能
@Configuration
public class MyDataSourceConfig {
//默认的自动配置是判断容器中没有才会配@ConditionalOnMissingBean({DataSource.class, XADataSource.class})
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
//加入监控功能等,可以允许多个filter,多个用,分割;如:
druidDataSource.setFilters("stat,wall");
// 配置防火墙功能
druidDataSource.setFilters("stat,wall");
return druidDataSource;
}
ssdsss[注]:所有能在Druid中用set方法设置的值,都能在SpringBoot配置文件中设置。
spring:
datasource:
url: jdbc:mysql://localhost:3306/girls
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
filters: stat,wall
ssdsss[注]:系统中部分的filter:
ssdsdsdss
ssss④、配置 Druid 监控页
sdsdss
ssdsss[注]:我们在SpringBoot中使用ServletRegistrationBean配置原生Servlet
@Bean
public ServletRegistrationBean statViewServlet() {
StatViewServlet statViewServlet = new StatViewServlet();
ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>
(statViewServlet, "/druid/*");
return registrationBean;
}
ssss⑤、配置监控页面访问密码
@Bean
public ServletRegistrationBean statViewServlet() {
StatViewServlet statViewServlet = new StatViewServlet();
ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<StatViewServlet>(statViewServlet, "/druid/*");
registrationBean.addInitParameter("loginUsername","admin");
registrationBean.addInitParameter("loginPassword","123456");
return registrationBean;
}
ssss⑥、配置WebStatFilter:用于采集web-jdbc关联监控的数据。
/**
* WebStatFilter用于采集web-jdbc关联监控的数据。
*/
@Bean
public FilterRegistrationBean webStatFilter(){
WebStatFilter webStatFilter = new WebStatFilter();
FilterRegistrationBean<WebStatFilter> webStatFilterFilterRegistrationBean = new FilterRegistrationBean<>(webStatFilter);
webStatFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
webStatFilterFilterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return webStatFilterFilterRegistrationBean;
}
starter方式引入Druid:
ssss①、引入druid-starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
ssss②、分析自动配置项
ssdsdssdss
ssdssd
ssdsssⅠ. 扩展配置项 :spring.datasource.druid 和 spring.datasource
@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
=========》@ConfigurationProperties("spring.datasource.druid")
=========》@ConfigurationProperties( prefix = "spring.datasource")
ssdsssⅡ. 导入的组件分析:
@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class,
DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})
=========================================================================================================
DruidSpringAopConfiguration.class,====>监控SpringBean的,配置项:
@ConditionalOnProperty("spring.datasource.druid.aop- patterns")
DruidStatViewServletConfiguration.class========>监控页的配置 默认开启:
@ConditionalOnProperty(name = {"spring.datasource.druid.stat-view-
servlet.enabled"},havingValue = "true")
配置名:spring.datasource.druid.stat-view-servlet
DruidWebStatFilterConfiguration.class,====> web监控配置 默认开启:
@ConditionalOnProperty( name = {"spring.datasource.druid.web-stat-
filter.enabled"},havingValue = "true")
配置名:spring.datasource.druid.web-stat-filter
DruidFilterConfiguration.class======> 所有Druid的Filter的配置
==================================================================================================================
所有Druid的Filter的配置
private static final String FILTER_STAT_PREFIX = "spring.datasource.druid.filter.stat";
private static final String FILTER_CONFIG_PREFIX = "spring.datasource.druid.filter.config";
private static final String FILTER_ENCODING_PREFIX = "spring.datasource.druid.filter.encoding";
private static final String FILTER_SLF4J_PREFIX = "spring.datasource.druid.filter.slf4j";
private static final String FILTER_LOG4J_PREFIX = "spring.datasource.druid.filter.log4j";
private static final String FILTER_LOG4J2_PREFIX = "spring.datasource.druid.filter.log4j2";
private static final String FILTER_COMMONS_LOG_PREFIX = "spring.datasource.druid.filter.commons-log";
private static final String FILTER_WALL_PREFIX = "spring.datasource.druid.filter.wall";
private static final String FILTER_WALL_CONFIG_PREFIX = "spring.datasource.druid.filter.wall.config";
ssss③、配置示例:
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_account
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
druid:
aop-patterns: com.atguigu.admin.* #监控SpringBean
filters: stat,wall # 底层开启功能,stat(sql监控),wall(防火墙)
stat-view-servlet: # 配置监控页功能
enabled: true
login-username: admin
login-password: admin
resetEnable: false
web-stat-filter: # 监控web
enabled: true
urlPattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat: # 对上面filters里面的stat的详细配置
slow-sql-millis: 1000
logSlowSql: true
enabled: true
wall:
enabled: true
config:
drop-table-allow: false
ssdsss[具体看官方文档]:spring配置示例 、配置项列表