springboot狂神说笔记

整合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安装测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值