参考文章:【Spring Boot】快速上手SpringBoot
在选择 dependencies的是增加两个SQL依赖,JDBC API和MySQL Driver
springboot的默认配置文件是application.properties,可以换成YAML配置,具体操作参考文章:【Spring Boot】配置文件之YAML
application.yaml配置: spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/hz?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false driver-class-name: com.mysql.cj.jdbc.Driver springboot测试类测试:@Autowired自动装配 @SpringBootTest class SpringbootDataApplicationTests { @Autowired DataSource dataSource; @Test void contextLoads() throws SQLException { System.out.println(dataSource.getClass()); Connection connection = dataSource.getConnection(); System.out.println(connection); connection.close(); } }测试结果:
class com.zaxxer.hikari.HikariDataSource HikariProxyConnection@189970261 wrapping com.mysql.cj.jdbc.ConnectionImpl@a098d76 controller类测试: @RestController public class JdbcController { @Autowired JdbcTemplate template; @GetMapping("/test") public List<Map<String, Object>> test(){ List<Map<String, Object>> maps = template.queryForList("select * from blog"); return maps; } //数据库的其他增加,删除,修改,全部用template.update(sql,sql语句中需要传的值) }访问http://localhost:8080/test页面:
Druid是阿里巴巴开源平台上一个数据库连接池实现,结合了C3PO、DBCP、PROXOOL等DB池的优点,同时加入了日志监控。
Druid可以很好的监控DB池连接和SQL的执行情况,天生就是针对监控而生的DB 连接池。 Spring Boot 2.0以上默认使用Hikari 数据源,接下是我们使用Spring Boot集成Druid数据源,实现数据库监控。
Github:https://github.com/alibaba/druid
application.yaml
spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/hz?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource #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同时导入log4j依赖pom.xml:
<!--log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 让配置文件中的属性生效,同时写好监控后台: 需要写一个DruidConfig.java @Configuration public class DruidConfig { //配置文件中的属性生效 @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druidDataSource(){ return new DruidDataSource(); } //后台监控:web.xml ServletRegistrationBean @Bean public ServletRegistrationBean statViewServlet(){ ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); //后台需要有人登录,账号密码配置 HashMap<String, String> initParameters = new HashMap<>(); //增加配置 initParameters.put("loginUsername","admin");//key固定 initParameters.put("loginPassword","123456"); //允许谁可以访问 initParameters.put("allow","");//第二个参数表示可以允许的用户,不填表示都可以访问 //禁止谁能访问 initParameters.put("","","");参数表示禁止的用户 //设置初始化参数 bean.setInitParameters(initParameters); return bean; } } 后台监控:前面DruidConfig.java配置了后台监控,可以直接访问:http://localhost:8080/druid
用户名和密码对应DruidConfig.java里面的initParameters.put("loginUsername","admin");//key固定和initParameters.put("loginPassword","123456"); 如果执行一条SQL语句,可以实时监控到: 5. 加入过滤器:用于配置web和druid数据源之间的管理关联监控统计 在DruidConfig.java中加入:
//过滤器 @Bean public FilterRegistrationBean webStatFilter(){ FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setFilter(new WebStatFilter()); //可以过滤哪些请求 HashMap<String, String> initParameters = new HashMap<>(); //exclusions:这些东西不进行统计, initParameters.put("exclusions","*.js,*.css,/druid/*"); bean.setInitParameters(initParameters); return bean; }