SpringSecurity 配置与使用(含新 API 替换过时的 WebSecurityConfigurerAdapter)
前言As we all know,现今主流权限框架有 SpringSecurity、Shiro、SaToken,Shiro在前后端分离时代基本被淘汰,剩下适合大型项目的 SpringSecurity 和 适合中小型项目的 SaToken 可以选择,SaToken 我也写了文章 Springboot 使用 SaToken 进行登录认证、权限管理以及路由规则接口拦截
SpringSecurity 作为 Spring 的官方权限框架,肯定是最牛逼的,当然也最复杂,中小型项目还是 SaToken 来的省心呀,简单,几行代码实现认证、拦截、踢人、单点登录等,SpringSecurity 想要实现这些功能,需要深入研究,现在我只写最简单的用户认证和接口权限控制。
现在的 SpringSecurity 版本更换了新的配置方式,下面有写
一、引入依赖
自己新建一个标准的 Springboot web 项目,然后增加下面这个依赖
1234<dependency> <groupId>org.springframework.boot</groupId> & ...
Springboot 配置使用 RabbitMQ 并实现延时队列
前言
RabbitMQ作用:举几个例子,1、系统解耦,A系统无需关心B系统是否执行成功,无需等待B系统响应,直接把操作扔给mq就可以干其他事情了。2、系统使用高峰期,每秒产生10000条消息需要存储,一次性存入数据库恐怕不太行,所以先把数据发送到 RabbitMQ ,然后设置延时队列,每秒从队列取出1000条存入数据库,这样可以减少数据库压力。3、购买商品下订单以后,发送到延时队列,如果20分钟后没有付款,则从队列删除订单,也就是自动取消订单,如果支付了,则取出存入数据库,下单成功。
一、安装 RabbitMQWindows安装
太简单,自己bing一下
Linux安装
rabbitmq需要erlang语言环境更新 apt 库,安装 erlang 环境,然后执行 erl 查看是否安装成功
123apt updateapt install erlangerl
安装 rabbitmq
1apt install rabbitmq-server
查看 rabbitmq 运行状态
1systemctl status rabbitmq-server
开启图形化管理界面,然后就 ...
Springboot 配置使用 Elasticsearch
前言
elasticsearch:就是一个很快很快的搜索引擎,使用场景就是像网易词典这种,输入几个相关文字,就可以从几百万个单词中瞬间找到匹配的翻译,这种海量数据的模糊搜索在关系型数据库中是不可能的,所以这时候就要用到elasticsearch了,但是它和 MongoDB 这种文档型数据库有什么区别,有没有懂的可以在评论区教教我,我是没有搞懂
一、安装Elasticsearch1、Windows安装
Windows安装比较简单,官网下载压缩包,解压出来,然后里面有个 bin 目录,里面有个elasticsearch.bat,双击,就运行起来了,然后在浏览器输入localhost:9200验证,成功会返回下面的图片
2、Linux安装12345678910111213# 导入公钥,如果报错gpg,则先apt install gpg一下就可以了,如果报错sudo,则去掉命令中的sudowget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyr ...
Springboot 使用 Dubbo3 并以 zookeeper 为注册中心
前言
dubbo:简单来讲就是一个 RPC 调用框架,类似于 SpringCloud + OpenFeign,支持 nacos、zookeeper 等注册中心,拥有图形界面,可使用界面管理 zookeeper 的节点信息zookeeper:是一个微服务注册中心,将一个个 Java 项目注册到 zookeeper,然后使用 openfeign 或者 dubbo 就可以实现这些 Java 项目之间的互相调用
zookeeper 可以连接线上的,也可以安装在本地,windows 安装很简单,你们自己去搜,Linux 安装我这里还有另一篇文章,一个 apt 命令的事情,无需配置环境变量什么的
Linux 使用 apt 安装 zookeeper
一、构建微服务项目==一定要选择 Springboot 3.0 以下的版本,和 jdk 14以下的版本,高于等于3.0和14 dubbo3 和 zookeeper 支持不好==
1、新建项目
最基础的结构,构建方法是,先 new 一个 DubboDemo 的 Springboot 项目,不需要勾选任何依赖
...
Linux 使用 apt 安装 zookeeper
前言zookeeper:是一个微服务注册中心,将一个个 Java 项目注册到 zookeeper,然后使用 openfeign 或者 dubbo 就可以实现这些 Java 项目之间的互相调用。
相较于去下载 zookeeper.tar 压缩包的方式来安装,使用 apt 安装的好处就是,方便,只需一个命令,而且安装以后无需配置环境变量
本教程用 Debian11 来演示,适用于 Ubuntu 系的全部系统,CentOS 系统将 apt 命令换为 yum 即可,或者 yum install apt就可以使用 apt 了
一、安装
首先你的 Linux 要有 jdk 环境,没有的要装一下,还是一样,一句命令,无需配置环境变量注意:Debian11 的仓库只有 jdk 11 和 17,所以想安装 1.8 需要手动下载压缩包,配置环境变量,11 和 17 并不影响 zookeeper 的正常启动,只是有些小瑕疵
1apt install openjdk-17-jdk
1apt install zookeeper
安装完成后,zookeeper 的配置文件在 /etc/zookeeper ...
Springboot 使用 SaToken 进行登录认证、权限管理以及路由规则接口拦截
前言
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。还有踢人下线、账号封禁、路由拦截规则、微服务网关鉴权、密码加密等丰富功能它不比 Shiro 和 SpringSecurity 的功能少,而且配置使用更加简单
一、引入和配置先给你们看一下 Demo 文件结构
1.引入依赖
如果不需要将 token 信息存入 redis,只需要引入下面这一个依赖
12345<dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>1.31.0</version></dependency>
https://qiniuoss.xuyijie.icu/XuYijieBlog/BlogImage/SaToken.p ...
Springboot 使用 Mybatis Plus LambdaQueryWrapper 构造器和注解自定义SQL
前言
MyBatis-Plus 是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,MyBatis 可以无损升级为MyBatis-Plus,只需要更换一下pom依赖即可。
1、强大的条件构造器:单表查询不需要写SQL语句2、支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错3、支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题4、内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询5、支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 、达梦等多种数据库
下面我将演示如何引入、配置、使用
一、配置和使用1、引入依赖12345<dependency> <groupId>com.baomidou</groupI ...
Springboot 配置线程池创建线程和配置 @Async 异步操作线程池
前言
众所周知,创建显示线程和直接使用未配置的线程池创建线程,都会被阿里的大佬给diss,所以我们要规范的创建线程。
至于 @Async 异步任务的用处是不想等待方法执行完就返回结果,提高软件前台响应速度,一个程序中会用到很多异步方法,所以需要使用线程池管理,防止影响性能。
一、创建一个Springboot Web项目需要一个Springboot项目
二、新建ThreadPoolConfig
/**
可以直接return一个内置线程池
Executors类创建线程池的方法归根结底都是调用ThreadPoolExecutor类,只不过对每个方法赋值不同的参数去构造ThreadPoolExecutor对象。
newCachedThreadPool:创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool: 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
newScheduledThreadPool: 创建一个定长线程池,支持定时及周期性任务执行。
newSingle ...
Springboot 使用 Redis 并配置序列化和封装 RedisTemplate
前言
为什么要配置序列化:如果不配置序列化的话,我们在redis数据库中存储的数据可能以乱码形式显示出来,不方便我们判断数据存储的正确性,说白了就是序列化以后存进去的是什么,查询出来的就是什么,否则我们的键值都会变成一串看不懂的乱码。
为什么要封装RedisTemplate,因为如果不进行封装的话,大家请看,是不是有黄色的警告信息,看着起来很不舒服,RedisTemplate后面的尖括号可以填泛型,填写以后警告就消失了,但我们的类型很多,每次只能Autowired一个RedisTemplate,所以不能写尖括号内的类型,同时封装也能按照自己的习惯自定义方法,更好用。
一、引入依赖只需要引入这一个就可以了,现在的版本里面包含了 lettuce ,所以不需要再额外引入 common-pool2
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId ...
Springboot引入hibernate配置自动建表并进行增删改查
前言
有些业务比较复杂,比如我们需要新建10张表,每张表有10个字段,如果用手工来操作,肯定非常浪费时间,而且随着代码中对实体类的修改,还要同时修改数据库表,有时候写着写着就忘了,代码改了,数据库没改,这种问题使用 hibernate 的自动建表就好啦。
一、引入依赖123456789<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency>
二、配置yml
自动 ...