SpringBoot学习笔记
☁☔🌄
JDBC,Druid,MyBatis,SpringSecurity…
一. 使用JDBC
1). 简介
对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。
2). 整合JDBC
1.导入依赖
1 | <!--JDBC--> |
2.编写yaml配置文件连接数据库
1 | spring: |
3.测试方法
1 |
|
JdbcTemplate主要提供以下几类方法:
- execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
- update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
- query方法及queryForXXX方法:用于执行查询相关语句;
- call方法:用于执行存储过程、函数相关语句。
3). 测试
编写一个Controller,注入 jdbcTemplate,编写测试方法进行访问测试
1 |
|
二. 使用Druid
1). Druid简介
Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,我们来重点介绍 Spring Boot 如何集成 Druid 数据源,如何实现数据库监控。
2). 配置数据源
1.添加上 Druid 数据源依赖
1 | <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> |
2.手动切换数据源
1 | # 自定义数据源 |
3.设置数据源连接初始化大小、最大连接数、等待时间、最小连接数 等设置项
1 | #Spring Boot 默认是不注入这些属性值的,需要自己绑定 |
4.导入Log4j 的依赖
1 | <!-- https://mvnrepository.com/artifact/log4j/log4j --> |
5.在测试类中测试
1 | //DI注入数据源 |
3). 配置Druid数据源监控
Druid 数据源具有监控的功能,并提供了一个 web 界面方便用户查看
1 |
|

三. MyBatis
1). 整合测试
1、导入 MyBatis 所需要的依赖
1 | <!-- mybatis-spring-boot-starter --> |
2、配置数据库连接信息
1 | spring: |
3、导入lombok依赖
1 | <dependency> |
4、创建实体类
User.java
1 |
|
5、创建mapper目录以及对应的 Mapper 接口
UserMapper.java
1 | //表示本类是一个 MyBatis 的 Mapper@Mapper@Repositorypublic interface |
6、对应的Mapper映射文件
UserMapper.xml
1 |
|
7、maven配置资源过滤问题
1 |
|
8、编写部门的 DepartmentController 进行测试!
1 |
|
四. SpringSecurity
1). 简介
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它实际上是保护基于spring的应用程序的标准。
Spring Security是一个权限框架,侧重于为Java应用程序提供身份验证和授权,对于权限一般会细分为功能权限,访问权限,和菜单权限。与所有Spring项目一样,Spring安全性的真正强大之处在于它可以轻松地扩展以满足定制需求。
Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。
对于上面提到的两种应用情景,Spring Security 框架都有很好的支持。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。
2). 认识SpringSecurity
Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理!
记住几个类:
- WebSecurityConfigurerAdapter:自定义Security策略
- AuthenticationManagerBuilder:自定义认证策略
- @EnableWebSecurity:开启WebSecurity模式
Spring Security的两个主要目标是 “认证” 和 “授权”(访问控制)。
“认证”(Authentication)
身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。
身份验证通常通过用户名和密码完成,有时与身份验证因素结合使用。
“授权” (Authorization)
授权发生在系统成功验证您的身份后,最终会授予您访问资源(如信息,文件,数据库,资金,位置,几乎任何内容)的完全权限。
这个概念是通用的,而不是只在Spring Security 中存在。
3). 授权与认证
1、引入 Spring Security 模块
1 | <dependency> |
2、编写 Spring Security 配置类
1 | // 开启WebSecurity模式 |
4). 权限控制
可以根据用户的不同等级,来显示不同权限的操作面板:用户没有登录的时候,导航栏上只显示登录按钮,用户登录之后,导航栏可以显示登录的用户信息及注销按钮!
1、导入依赖
1 | <!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity4 --> |
2、修改前端页面,导入命名空间
1 | xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" |
3、修改导航栏,增加认证判断
1 | <!--登录注销--> |
4、注销失败,可能是SpringSecurity默认防止csrf跨站请求伪造,因为会产生安全问题,我们可以将请求改为post表单提交,或者在spring security中关闭csrf功能;
1 | http.csrf().disable();//关闭csrf功能:跨站请求伪造,默认只能通过post方式提交logout请求 |
5、主页模块根据用户权限显示
1 | <!-- sec:authorize="hasRole('vip1')" vip1的用户可以看到--> |
5). 登录时记住用户密码
1、开启保存密码
1 | //开启记住我功能 |
2、登录页的记住我功能,会保存用户的cookie,默认保存14天

结论:登录成功后,将cookie发送给浏览器保存,以后登录带上这个cookie,只要通过检查就可以免登录了。如果点击注销,则会删除这个cookie。
6). 定制登录页
1、在刚才的登录页配置后面指定 loginpage
1 | //没有权限会调转到登陆界面,指定自己的登陆界面 |
2、页面需要指向我们自己定义的 login请求
1 | <a class="item" th:href="@{/toLogin}"> |
3、我们登录,需要将这些信息发送到哪里,我们也需要配置,login.html 配置提交请求及方式,方式必须为post:
1 | <form th:action="@{/login}" method="post"> |
4、这个请求提交上来,我们还需要验证处理,怎么做呢?我们可以查看formLogin()方法的源码!我们配置接收登录的用户名和密码的参数!
1 | http.formLogin() |
5、在登录页增加记住我的多选框
1 | <input type="checkbox" name="remember-me"> 记住我 |
6、后端验证处理!
1 | //定制记住我的参数! |
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/a9096803.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!