
接下来要学习的
SpringBoot整合
- JDBC
- MyBatis
- Druid
- Shiro:安全
- Spring Security:安全
- 异步任务、邮件发送、定时任务
- Swgger
- Dubbo + Zookeepr
Spring Boot 数据库
Spring Data? Spring、Spring Boot、Spring Cloud、Spring Data!
对于数据访问层,无论是SQL(关系型数据库)还是NOSQL(非关系型数据库),SpringBoot底层都采用Spring Data方式统一处理;
MySQL
使用
在application.yml中添加数据源配置;
1
2
3
4
5
6spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/springbootstudy?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver在要使用的类中直接创建一个引用,使用@Autowired注解。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class SpringBootWebStudy3DataApplicationTests {
//自动注入
DataSource dataSource;//可以直接使用的数据源
void contextLoads() throws SQLException {
//查看默认数据源
System.out.println(dataSource.getClass());
//获取数据库连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
}测试
1
2class com.zaxxer.hikari.HikariDataSource
HikariProxyConnection@1744190758 wrapping com.mysql.cj.jdbc.ConnectionImpl@536b71b4
链接url参数解释
1 | jdbc:mysql://localhost:3306/springbootstudy?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC |
jdbc:mysql://
:协议名localhost:3306/
:地址springbootstudy
:数据库名useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
:参数,其中useUnicode=true
和characterEncoding=utf-8
解决编码问题;serverTimezone=UTC
解决时区问题。若运行过程中出错,显示时区错误,可以通过这个参数解决;- 目前测试8.x版本,没有遇到相关问题,这些参数可以不加。
一些知识
默认数据源:HikariDataSource
SpringBoot相关类
DataSourceProperties、DataSourceAutoConfiguration。
JdbcTemplate
Spring对JDBC进行封装,使用JdbcTemplate可以非常方便的进行数据库操作。
使用
在SpringBoot下配置之后,DataSource和JdbcTemplate通过@Autowired可以直接操作数据库。
1 |
|
代码示例
1 |
|
Alibaba的Druid数据源
Hikari和Druid都是当前Java Web上最优秀的数据源。Hikari有优秀的速度,Druid有优秀的日志监控功能。
Druid特色:添加优秀的监控功能,拥有使用Web页面查看监控项目功能。
(Druid的监控功能不是监控数据库的,是监控Java应用的)
依赖
Druid需要两个依赖:com.alibaba.druid和log4j.log4j。
1 | <!--druid--> |
指定SpringBoot使用阿里巴巴的Druid数据源
两种方式,
方式1:在SpringBoot下添加配置
在SpringBoot下的配置里添加以下内容。
1 | spring: |
方式2:创建配置类
在config包下创建DruidConfig类,并添加druidDataSource方法,使用@Bean注解和@ConfigurationProperties(prefix = “spring.datasource”)注解,自定义数据源。
1 | //声明配置类 |
使用alibaba的Druid监控功能
配置监控页面(Web)
在config下创建DruidConfig类
使用@Configuration注解DruidConfig类。
1
2
public class DruidConfig {...}配置数据源,并使数据源依赖于alibaba.druid。
1
2
3
4
5
public DataSource druidDataSources(){
return new DruidDataSource();
}配置后台监控功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18//后台监控功能
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");//监控的url地址,这里为http://127.0.0.1/druid/
//增加配置
HashMap<String, String> initParameters = new HashMap<>();
//后台账号和密码配置 key是固定值不能变 loginUsername用户名 loginPassword密码
initParameters.put("loginUsername","root");
initParameters.put("loginPassword","123456");
//允许访问
initParameters.put("allow","");//若参数为空,表示所有人可以访问
bean.setInitParameters(initParameters);//设置初始化参数
return bean;
}(可选)配置Filter,使Druid不统计指定的数据。
1
2
3
4
5
6
7
8
9
10
11
12//通过filter配置不需要druid统计的数据
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
//不进行统计的数据
Map<String,String> initParameters = new HashMap<>();
initParameters.put("exclusions","*.js,*.css,/druid/*");//不统计符合表达式的数据,这里指所有的js和css文件。
bean.setInitParameters(initParameters);
return bean;
}
完整代码
1 |
|
界面展示
其他
示例用的SQL
1 | CREATE DATABASE springbootstudy; |