springboot
- 整合jdbc
- 整合Druid数据源
- 整合mybatis框架
- springSecurity
- 记住我及首页定制
- shiro
- shiro实现登录拦截
- shrio实现用户认证
- shiro整合mybatis
- 开源项目分析
- swagger
- swagger简介
- springboot集成swagger
- 配置swagger信息
- swagger 配置扫描接口
- 分组及接口注释
- 任务
- 异步任务
- 邮件任务
- 定时执行任务
- 分布式系统理论Dubbo+Zookeeper
- zookeeper安装
- dubbo-admin安装测试
整合jdbc
对于数据访问层,无论是sql还是nosql,springboot底层都是采用spring DATA的方式进行处理
1.连接mysql

2.编写配置文件application.yml
注意配置要正确!假如时区报错需要增加时区配置

3.测试


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>//导入此依赖才可以使用RestController注解
增删改类似,可以自己尝试写一下
整合Druid数据源
Druid是 阿里巴巴开源平台上的一个数据连接池实现,结合c3p0,BDCP等DB池的优点,同时加入了日志监控,可以很好的监控DB池的连接和sql的执行情况,天生就是针对监控而生的DB连接池。
导入依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.5</version>
</dependency>配置

druid专有配置
spring:
datasource:
username: root
password: 12345
url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 初始化连接池个数
initialSize: 5
# 最小连接池个数——》已经不再使用,配置了也没效果
minIdle: 2
# 最大连接池个数
maxActive: 20
# 配置获取连接等待超时的时间,单位毫秒,缺省启用公平锁,并发效率会有所下降
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 用来检测连接是否有效的sql,要求是一个查询语句。
# 如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用
validationQuery: SELECT 1 FROM DUAL
# 建议配置为true,不影响性能,并且保证安全性。
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
testWhileIdle: true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnBorrow: false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 通过别名的方式配置扩展插件,多个英文逗号分隔,常用的插件有:
# 监控统计用的filter:stat
# 日志用的filter:log4j
# 防御sql注入的filter:wall
filters: stat,wall,log4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
useGlobalDataSourceStat: true新建配置类,绑定配置文件


启动
导入log4j依赖,否则无法进入此页面

执行一次查询

后台显示信息

因为springboot内置了servlet容器,所以没有web.xml,替代方法:ServletRegistrationBean配置过滤器

整合mybatis框架
整合包
mybatis-spring-boot-starter
新建项目


导入依赖

配置文件

测试

整合mybatis

写实体类与接口


.xml文件实现接口

controller调用

springSecurity
过滤器,拦截器
做网站设计之初考虑安全问题
shiro,springSecurity,认真,授权
1.功能权限
2.访问权限
3.菜单权限
4.过滤器,拦截器大量原生代码,冗余
新建项目导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>关闭模板引擎缓存,不然每次要重启

`导入静态资源:gitee搜索狂神springboot
编写controller

测试

使用security只需要导入
spring-boot-starter-security模块
记住一下类:
WebSecurityConfigurerAdapter:自定义security策略
AuthenticationManagerbuilder:自定义认证策略
@EnableWebSecurity:开启WebSecurity模式
两个主要目标
认证
授权
官方文档
https://docs.spring.io/spring-security/site/docs/5.4.5/reference/html5/#getting

下载源码可以看到注释


没有权限则进入登入页面

认证

登入成功

注销模板网站:https://semantic-ui.com/elements/icon.html





导入security-thymeleaf整合包
<!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity4 -->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>导入命名空间
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4

springboot版本降级才能生效
菜单根据用户角色显示

记住我及首页定制


关闭浏览器重新进入,已经登录

cookie默认保存两周

清楚cookie

shiro
下载

新建项目
导入依赖

依赖位置

自己该版本号
导入log4j.properties与shiro.ini


导入Quickstart.java

删除错误的import,
alt+enter重新导入包
运行,出现日志
尝试读QuickStart的方法
subject 用户
SecurityManager 管理所有用户
Realm 连接数据
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<version>1.7.1</version>
</dependency>

shiro实现登录拦截
拦截添加页与更新页


shrio实现用户认证



shiro整合mybatis
导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>开源项目分析
1.看配置
2.看.class
3.创建数据库
swagger
学习目标
1.了解swagger的作用和目的
2.了解前后端分离
3.在springboot中集成swagger
swagger简介
前后端分离
vue+springboot
后端时代
前端只用管理静态页面;html给后端。模板引擎jsp,后端主力
前后端分离时代:
后端:控制层,服务层,数据访问层
前端:前端控制层,视图层
伪造后端数据json已经存在了,不需要后端,前端工程依旧能抛起来
前后端交互通过api访问
前后端相对独立,松耦合;
前后端甚至可以部署在不同的服务器上
出现一个问题:
前端后端联调,前后端人员无法:即使协商,尽早解决这个问题
解决方案
首先自定一个提纲,实时更新,实行更新最新的api,降低集成的风险
早些年:指定word计划文档
前后端分离: 前端测试后端接口postman
后端提供接口需要实时更新最新的消息!
swagger
1.号称世界上最新的api框架
2.restful api文档在线自动生成工具=api文档与api定义同步更新
3.直接运行,可以在线测试api接口
4.支持多种语言java,php
官网
在项目中使用swagger,需要spring-box
1.swagger2
2.swaggerui
springboot集成swagger

1.新建springboot-web项目
2.导入依赖
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.10.5</version>
</dependency>3.编写hello world

4.配置swagger>>>>config

5.测试
不成功降依赖swagger版本2.9.2版本http://localhost:8080/swagger-ui.html

配置swagger信息
swagger的bean实例docket


swagger 配置扫描接口
Docket.select()


我们只希望swagger在生产环境中使用,在发布环境中不使用
1.判断是不是生产环境flag=false
2.注入enable(flag)添加配置文件



生产环境访问不到

分组及接口注释
配置api文档的分组

配置多个分组


实体类配置




方法(接口上)和参数上可以加注释


代码错误

测试出现错误

1.我们可以通过swagge给一些难以理解的属性接口,增加新的注释信息
2.接口文档实时更新
3.可以在线测试
几乎所有的大公司都在使用它
注意点:在正式发布的时候,关闭swagger,处于安全考虑,节省内存
任务
异步任务
定时任务
邮件任务
异步任务


等待三秒进入页面



现在页面秒刷新,不用在等待三秒
邮件任务
导入依赖,实际上导入javax.mail
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
获得第三方登入密码



收到自己给自己发送的邮件


将以上封装为方法,工具类

为什么给别人发送邮件失败

定时执行任务
TaskScheduler任务调度者
TaskExecutor 任务执行者
//开启定时功能的注解
@EnableScheduling
@Scheduled//什么时候执行
Cron表达式

分布式系统理论Dubbo+Zookeeper
dubbo是一款高性能的轻量级的开源javaRPC框架,他提供三大核心能力:面向接口的远程方法调用,智能容错,负载均衡,以及服务自动注册和发现
zookeeper安装
下载地址:https://zookeeper.apache.org/releases.html
解压
以管理员的身份运行

闪退,打开文件查看配置
加入pause

运行时暂停

端口号:


与linux命令相似

dubbo-admin安装测试
















