经典依赖:
<dependencies>
<!--引入web模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
经典全局配置文件:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: ****
使用一个测试方法 可以查询当前默认的数据源类型:
@Autowired
DataSource dataSource;
@Test
public void contextLoads() {
Class<? extends DataSource> aClass = this.dataSource.getClass();
System.out.println(aClass);
try {
Connection connection = this.dataSource.getConnection();
System.out.println(connection);
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

--------------------------------------------------------------------------------
使用Druid数据:
新加依赖:
<!--引入druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
新加全局配置文件:
type: com.alibaba.druid.pool.DruidDataSource
在全局配置文件中还可添加其他字段:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
#打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
max-pool-prepared-statement-per-connection-size: 20
#用于SQL状态监控,stat代表状态,wall代表防火墙
filters: stat,wall
use-global-data-source-stat: true
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 添加IP白名单
#allow:
# 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
#deny:
web-stat-filter:
# 添加过滤规则
url-pattern: /*
# 忽略过滤格式
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
要使这些配置生效,需要编写DruidConfig类 举例如下:
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid() {
return new DruidDataSource();
}
/**
* 配置一个druid的监控
* 1、配置一个druid的后台 管理servlet
* 2、配置一个druid的filter
*/
//1、配置一个druid的后台 管理servlet
@Bean
public ServletRegistrationBean servletRegistrationBean() {
//注意,请求时 /druid/*
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String, String> initParm = new HashMap<>();
//登陆页面账户与密码
initParm.put(ResourceServlet.PARAM_NAME_USERNAME, "root");
initParm.put(ResourceServlet.PARAM_NAME_PASSWORD, "123123");
//监控后台 允许ip
initParm.put(ResourceServlet.PARAM_NAME_ALLOW, "");
//黑名单
initParm.put(ResourceServlet.PARAM_NAME_DENY, "192.168.0.1");
bean.setInitParameters(initParm);
return bean;
}
// 2、配置一个druid的filter
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
Map<String, String> initPrams = new HashMap<>();
initPrams.put(WebStatFilter.PARAM_NAME_EXCLUSIONS, "*.js,*.css,/druid/*");
bean.setInitParameters(initPrams);
//设置拦截器请求
bean.setUrlPatterns(Arrays.asList("/"));
return bean;
}
}
再次运行测试方法:
打印的结果为:

登录 用户(这里是 root 123123)后可以看到

成功进入druid后台管理页面