一、整合Druid数据源
1、导入数据源:https://mvnrepository.com/artifact/com.alibaba/druid
(1)选择1.1.12
在pom中配置依赖
配置完成后,全局搜索druid,看能否能搜到,此时遇见一个问题,配置的依赖不生效,参考https://blog.csdn.net/mgdj25/article/details/104638174,重新导入pom文件解决
一般util文件里面都是做的一些封装,封装好的东西可以拿来直接使用
(2)想使用自己的数据源需要在properties中先指定,通过type来制定数据源,制定之后就使用的是指定的数据源
重新执行文件
@SpringBootTest
class Springboot01ApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//查看默认数据源
System.out.println(dataSource.getClass());
//获得数据源链接
Connection connection = dataSource.getConnection();
System.out.println(connection);
//关闭数据库链接
connection.close();
}
}
发现数据源变成了druid数据源,说明了使用的druid的数据源,但是底层仍然是jdbc,因为底层就是使用的jdbc
(3)配置application,一些常规的功能,此处直接拷贝自:https://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&mid=2247483786&idx=1&sn=f5f4ca792611af105140752eb67ce820&scene=19#wechat_redirect
#Spring Boot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
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
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
druid的优势之一就是监控的功能,配置filters属性
此时会报错,因为上面filters中使用了log4j,pom文件中没有导入这个依赖,导入这个依赖即可
(4)执行上述操作,重新跑controller中的文件,结果和之前使用jdbc的方式结果一样
(5)他的强大之处,在于可以自定义配置,新增config包,@Configuration,一个个config对应的就是一个个beean,xml,对应一个个文件
绑定yaml:(1)绑定bean(2)绑定yaml文件
(6)做后台监控功能
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource DruidDataSource(){
return new DruidDataSource();
}
//后台监控
@Bean
public ServletRegistrationBean statViewServlet(){
//这段固定的进入配置监控
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
//后台需要有人登陆账号,密码
HashMap<String,String> init = new HashMap<>();
//增加配置
init.put("LoginUsername","admin");//登陆key,是固定的LoginUsername,LoginPassword
init.put("LoginPassword","1234");
//允许谁可以访问
init.put("allow","");
//禁止谁可以访问
init.put("huahua","192.1.2.3");
bean.setInitParameters(init);//设置初始化参数
return bean;
}
}
输入代码中设置的账号密码后,可以进入查询监控面板
(7)
a、因为springboot内置了servlet容器,所以没有web.xml
b、