<>一、配置druid数据源:
引入druid包: 引入的是druid-spring-boot-starter <properties> <java.version>1.8</
java.version> </properties> <dependencies> <dependency> <groupId>
org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</
artifactId> </dependency> <!--引入德鲁伊数据源,直接引入starter不是jar--> <dependency> <groupId
>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <
version>1.1.14</version> </dependency> <dependency> <groupId>
org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</
artifactId> </dependency> <!--导入mysql依赖--> <dependency> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </
dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId
>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <
exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine
</artifactId> </exclusion> </exclusions> </dependency> <!-- springboot热部署 --> <
dependency> <groupId>org.springframework.boot</groupId> <artifactId>
spring-boot-devtools</artifactId> <optional>true</optional> <scope>true</scope>
</dependency> </dependencies> <!--打包为可执行的jar--> <build> <plugins> <plugin> <
groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin
</artifactId> </plugin> </plugins> </build>
<>application.yml:
spring: datasource: url: jdbc:mysql://localhost:3306/webstore?
serverTimezone=UTCusername: root #注意不要使用data-username和data-password password:
123456 driver-class-name: com.mysql.cj.jdbc.Driver
<>测试: 在test类里面进行测试。可以看到已经配置成功了

<>二、原理: 为什么引入了一个starter就能直接使用druid数据源了?

<>1.pom中引入的starter自动引入了下面的包:

<>2.该包下有一个DruidDataSourceAutoConfigure的类中自动配置了druid的默认配置:
public class DruidDataSourceAutoConfigure { private static final Logger LOGGER
= LoggerFactory.getLogger(DruidDataSourceAutoConfigure.class); public
DruidDataSourceAutoConfigure() { } @Bean( initMethod = "init" )
@ConditionalOnMissingBean //当容器中没有这个bean的时候就会自动装配 public DataSource dataSource()
{ LOGGER.info("Init DruidDataSource"); return new DruidDataSourceWrapper();
//返回包装了druid的数据源 } } //点进DruidDataSourceWrapper类里面去: @ConfigurationProperties(
"spring.datasource.druid")//@ConfigurationProperties注解:绑定配置文件中指定的字段和标注的类(方法)
class DruidDataSourceWrapper extends DruidDataSource implements InitializingBean
{ //加载了druid的starter后就自动装配了spring.datasource.druid的配置 @Autowired private
DataSourceProperties basicProperties; //这里装配了springboot默认的DataSourceProperties
//点进去DataSourceProperties 里面 @ConfigurationProperties(prefix =
"spring.datasource") public class DataSourceProperties implements
BeanClassLoaderAware, InitializingBean { //在afterPropertiesSet方法中指定了基本属性 public
void afterPropertiesSet() throws Exception {
/*把springboot默认的数据源的一些基本信息进行了同步,如username,password,url,driver。
即这些属性可以直接在配置文件中使用spring.datasource指定,等价于spring.datasource.druid配置上面的信息。
但是如果配置这些信息以外的数据源信息必须使用spring.datasource.druid指定。
这里推荐使用druid数据源时就直接使用spirng.datasource.druid指定 */ if (super.getUsername() == null
) { super.setUsername(this.basicProperties.determineUsername()); } if (super.
getPassword() == null) { super.setPassword(this.basicProperties.
determinePassword()); } if (super.getUrl() == null) { super.setUrl(this.
basicProperties.determineUrl()); } if (super.getDriverClassName() == null) {
super.setDriverClassName(this.basicProperties.getDriverClassName()); } }

上面的两处的@ConfigurationProperties可以发现druid-spring-boot-starter已经默认配置好了这些基本属性username,password,url,driver,(spring.dataSource==spring.datasource.druid),你只需添加依赖即可,一切操作和以前一样处理。但是如果使用其他属性,则必须使用spring.datasource.druid

<>三、druid数据源的其他属性配置:

<>application.yml: 必须使用spring.datasource.druid:
spring: datasource: druid:
#注意配置url、username、password、driver以外的其他配置必须在druid下写,这样会自动包装到DruidDataSourceWrapper里面
url: jdbc:mysql://localhost:3306/webstore?serverTimezone=UTC username: root
#注意不要使用data-username和data-password password: 123456 driver-class-name:
com.mysql.cj.jdbc.Driver#开启sql语句自动加载,只认识名为:
schema-all.sql和schema.sql和data-all.sql和data.sql的sql语句 # initialization-mode:
always # 数据源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000
timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false
testOnReturn: false poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 #
配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filters: stat,wall
#自定义sql文件名,点进去后这个是一个list schema: - classpath:department.sql #可以指定多个文件
test测试: 断点调试是否把配置文件中的属性信息加载到容器:

<>四、druid的监控配置:

druid监控的作用:
可以对druid数据库连接池进行监控,可以查看SQL/ URL /方法 的请求次数,耗时等等统计信息,有助于提前发现和排查系统中存在的问题。

* druid的监控配置属性在 DruidStatProperties
类的内部类中,配置文件中,必须使用spring.datasource.druid指定。
*
如果要是使用druid数据源,必须配置文件的前缀必须是spirng.datasource.druid。以前使用默认的是spring.datasource。看上面的原理分析。
先来感受一下druid监控的用处,
如:查询了一次数据后,druid监控就会有sql记录:
@Controller public class MyTemplateController { @Autowired
//因为有了数据源就自动装配了一个JdbcTemplate,所以JdbcTemplate已经在了容器中 JdbcTemplate jdbcTemplate;
@ResponseBody @GetMapping("query") public Map<String ,Object> query(){ List<Map<
String, Object>> list = jdbcTemplate.queryForList("select * from department");
return list.get(0); } }

druid后台页面:

<>application.yml:
spring: datasource: druid: #配置监控属性: 在druid-starter的:
com.alibaba.druid.spring.boot.autoconfigure.stat包下进行的逻辑配置 web-stat-filter: #
WebStatFilter配置, enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
url-pattern: /* #拦截该项目下的一切请求 exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,
*.css,*.ico #对这些请求放行 session-stat-enable: true principal-session-name:
session_nameprincipal-cookie-name: cookie_name stat-view-servlet: #
StatViewServlet配置 enabled: true #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
url-pattern: /druid/* #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址 reset-enable:
false#禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用 login-username: admin #监控页面登录的用户名
login-password: 123456 #监控页面登录的密码 allow: 127.0.0.1,192.168.2.111
#IP白名单(没有配置或者为空,则允许所有访问)。允许谁访问druid后台,默认允许全部用户访问。 deny: #IP黑名单
(存在共同时,deny优先于allow)。不允许谁访问druid后台 aop-patterns: com.lcf.service.*
#Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
<>application.properties: 二选一使用
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 spring.datasource.druid.filters=
stat,wall #######监控配置 #WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=10
spring.datasource.druid.web-stat-filter.principal-session-name=session_name
spring.datasource.druid.web-stat-filter.principal-cookie-name=cookie_name
spring.datasource.druid.web-stat-filter.profile-enable=
#StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置默认false
spring.datasource.druid.stat-view-servlet.enabled=true #配置DruidStatViewServlet
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
#禁用HTML页面上的“Reset All”功能
spring.datasource.druid.stat-view-servlet.reset-enable=false
spring.datasource.druid.stat-view-servlet.login-username=admin #监控页面登录的用户名
spring.datasource.druid.stat-view-servlet.login-password=123456 #监控页面登录的密码
#IP白名单(没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.0.119 #IP黑名单
(存在共同时,deny优先于allow) spring.datasource.druid.stat-view-servlet.deny=
#Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
spring.datasource.druid.aop-patterns= com.lcf.service.*
<>application.yml的全部配置:
spring: datasource: druid: url: jdbc:mysql://localhost:3306/webstore?
serverTimezone=UTCusername: root #注意不要使用data-username和data-password password:
123456 driver-class-name: com.mysql.cj.jdbc.Driver #开启sql语句自动加载,只认识名为:
schema-all.sql和schema.sql和data-all.sql和data.sql的sql语句 # initialization-mode:
always # 数据源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000
timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false
testOnReturn: false poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500: #
配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filters: stat,wall #配置监控属性:
在druid-starter的: com.alibaba.druid.spring.boot.autoconfigure.stat包下进行的逻辑配置
web-stat-filter: # WebStatFilter配置, enabled: true
#默认为false,表示不使用WebStatFilter配置,就是属性名去短线 url-pattern: /* #拦截该项目下的一切请求 exclusions:
/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico #对这些请求放行 session-stat-enable:
true principal-session-name: session_name principal-cookie-name: cookie_name
stat-view-servlet: # StatViewServlet配置 enabled: true
#默认为false,表示不使用StatViewServlet配置,就是属性名去短线 url-pattern: /druid/*
#配置DruidStatViewServlet的访问地址。后台监控页面的访问地址 reset-enable: false
#禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用 login-username: admin #监控页面登录的用户名
login-password: 123456 #监控页面登录的密码 allow: 127.0.0.1,192.168.2.111
#IP白名单(没有配置或者为空,则允许所有访问)。允许谁访问druid后台,默认允许全部用户访问。 deny: #IP黑名单
(存在共同时,deny优先于allow)。不允许谁进行访问druid后台, #Spring监控配置,说明请参考Druid Github
Wiki,配置_Druid和Spring关联监控配置 aop-patterns: com.lcf.service.*
#自定义sql文件名,点进去后这个是一个list schema: - classpath:department.sql #可以指定多个文件
如有问题多多指出

技术
©2019-2020 Toolsou All rights reserved,
【贪心算法】哈夫曼编码问题VHDL——JK触发器react 项目--博客系统数据库期末复习:综合应用题汇总面过了,起薪30k找出游戏的获胜者(java)JAVA实验四集合与函数式编程实验排序会了递归,不学非递归太可惜了SQL综合题 员工单位综合题数据库作业五