一篇搞定SpringBoot整合JDBC以及配置Druid数据源难道不香么?
整合JDBC
只需要两个依赖,在pom.xml文件中导入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
application.yml文件配置数据库连接:
spring:
datasource:
username: jektong
password: 123456
url: jdbc:mysql://localhost:3306/jektong?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
找个测试类测试一下:
@SpringBootTest
class StudyVideoApplicationTests {
@Autowired
private DataSource dataSource;
@Test
void contextLoads() throws SQLException {
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
输出类似这样的:说明配置没有问题
HikariProxyConnection@1957530885 wrapping com.mysql.cj.jdbc.ConnectionImpl@676ff3b0
整合Druid
使用阿里的Druid主要就是因为Druid的监控系统有点强大
主要依赖
<!-- 配置阿里巴巴连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
Druid数据源的配置:这些配置拿来即用
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/jektong?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
username: jektong
password: 123456
# 指定数据源
type: com.alibaba.druid.pool.DruidDataSource
# 初始化连接个数
initialSize: 5
# 最小连接池
minIdle: 5
# 最大连接池
maxActive: 20
# 连接等待超时的等待时间
maxWait: 60000
# 多久检测一次
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
filters: stat,wall,log4j
logSlowSql: true
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
connectionProperties: druid.statmergeSql=true;druid.stat.slowSqlMillis=5000
建立配置类DruidCofig.java配置文件
package com.jektong.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
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 javax.sql.DataSource;
/** * @author jektong * @Date 2020/10/5 16:02 */
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
// 后台监控
@Bean
public ServletRegistrationBean statViewServlet() {
// 现在要进行druid监控的配置处理操作
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(
new StatViewServlet(), "/druid/*");
// 白名单,多个用逗号分割, 如果allow没有配置或者为空,则允许所有访问
servletRegistrationBean.addInitParameter("allow", "127.0.0.1,172.29.32.54");
// 黑名单,多个用逗号分割 (共同存在时,deny优先于allow)
servletRegistrationBean.addInitParameter("deny", "192.168.1.110");
// 控制台管理用户名
servletRegistrationBean.addInitParameter("loginUsername", "admin");
// 控制台管理密码
servletRegistrationBean.addInitParameter("loginPassword", "eju1314");
// 是否可以重置数据源,禁用HTML页面上的“Reset All”功能
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
//所有请求进行监控处理
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.css,/druid/*");
return filterRegistrationBean;
}
}
输入网址:
http://localhost:8080/druid/login.html
就会进入Druid后台监控登录的页面,输入密码就登录成功了
只要触发了数据库语句就会有相应的记录了!!!
还没有评论,来说两句吧...