基本步骤
导入jdbc场景
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.6.0</version>
</dependency>
导入数据库驱动
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
可以手动声明版本号
配置文件
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/blog?useUnicode=true&CharacterEncodeing=utf-8&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
测试:
@Autowired
JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
Long aLong = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM my_user", Long.class);
log.info("记录数:{}",aLong);
}
自定义配置数据源
以druid为例
首先需要导入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
按照spring的方法我们应该在配置文件中写入一个bean。在springboot中我们可以直接写入一个bean注入到容器。
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DruidDataSourceConfig {
@Bean
@ConfigurationProperties("spring.datasource")//绑定配置文件的属性值
public DataSource dataSource(){
return new DruidDataSource();
}
}
这个时候我们再去查看数据源,springboot默认的数据源是Hikari,我们现在再次打印可以看到数据源变成了我们自定义的Druid。
开启druid的其他功能
开启监控功能
根据官方文档我们可以看到如果需要开启监控功能我们需要在web.xml中配置一个Servlet。在springboot中
没有web.xml,那么我们就直接使用ServletRegistrationBean在容器中注册。
@Bean
public ServletRegistrationBean statViewServlet(){
StatViewServlet statViewServlet = new StatViewServlet();
return new ServletRegistrationBean<StatViewServlet>(statViewServlet,"/druid/*");
}
}
然后我们还需要手动开启监控功能
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setFilters("stat");//开启监控功能
return druidDataSource;
}
输入http://localhost:8080/druid/index.html
我们来写一个请求测试一下
@Controller
@Slf4j
public class SqlController {
@Autowired
JdbcTemplate jdbcTemplate;
@RequestMapping("/sql1")
public String sql1(){
Long aLong = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM my_user", Long.class);
log.info("记录数:{}",aLong);
return "index";
}
}
开启web监控功能
@Bean
public FilterRegistrationBean webStatFilter(){
WebStatFilter webStatFilter = new WebStatFilter();
FilterRegistrationBean<WebStatFilter> webStatFilterFilterRegistrationBean = new FilterRegistrationBean<>(webStatFilter);
webStatFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
webStatFilterFilterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return webStatFilterFilterRegistrationBean;
}
开启防火墙功能
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setFilters("stat,wall");//wall开启防火墙
return druidDataSource;
}
开启密码登陆
在servlet中增加初始化数据
bean.addInitParameter("loginUsername","druid");
bean.addInitParameter("loginPassword","druid");
使用starter配置数据源
导入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
配上这个之后所有自定义的配置都可以通过配置文件来配,效果是一样的。
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&CharacterEncodeing=utf-8&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
filters: stat,wall,slf4j
stat-view-servlet:
enabled: true
login-username: admin
login-password: admin
reset-enable: flase
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filter:
stat:
log-slow-sql: true #开启慢查询日志
slow-sql-millis: 1000 #慢查询的标准
wall:
enabled: true
config:
drop-table-allow: false #不允许删除表