202009-27 基于spring boot 2和shiro实现身份验证案例 Shiro是一个功能强大且易于使用的Java安全框架,官网:https://shiro.apache.org/。主要功能有身份验证、授权、加密和会话管理。其它特性有Web支持、缓存、测试支持、允许一个用户用另一个用户的身份进行访问、记住我。Shiro有三个核心组件:Subject,SecurityManager和Realm。Subject:即当前操作“用户”,“用户”并不仅仅指人,也可以是第三方进程、后台帐户或其他类似事物。SecurityManager:安全管理器,Shiro框架的核心,... 继续阅读 >
202009-27 Spring boot集中异常处理方法实例 集中异常处理以下代码可在github获取:https://github.com/Syske/learning-dome-code/tree/master/springboot-learning方式一:ExceptionHandle定义自己的异常类型,根据不同类型做不同处理,比如我定义的MyException:publicclassMyExceptionextendsRuntimeException{publicMyException(Stringmsg){super(msg);}}然后通过MyExceptionHandle处理该异常,需要注意的是异常不能在filter中抛出,抛出也没法捕获@Rest... 继续阅读 >
202009-27 Spring Boot Admin监控服务如何使用 SpringBootAdmin简介随着开发周期的推移,项目会不断变大,切分出的服务也会越来越多,这时一个个的微服务构成了错综复杂的系统。对于各个微服务系统的健康状态、会话数量、并发数、服务资源、延迟等度量信息的收集就成为了一个挑战。SpringBootAdmin就是基于这些需求开发出的一套功能强大的监控管理系统。同样,SpringBootAdmin也是由两个角色组成,一个是服务端SpringBootAdminServer,一个是客户端SpringBootA... 继续阅读 >
202009-27 Spring boot集成redis lettuce代码实例 springboot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端引入依赖<!--springbootredis缓存引入--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.0.4.RELEASE</version></dependency><!--redis依赖commons-pool这个依赖一定要添加--><dependency>... 继续阅读 >
202009-27 Spring Boot监听Redis Key失效事件实现定时任务的示例 业务场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。方式可能有很多,在这里介绍一种监听Redis键值对过期时间来实现订单自动关闭。实现思路在生成订单时,向Redis中增加一个KV键值对,K... 继续阅读 >
202009-27 Spring Boot如何通过CORS处理跨域问题 跨域的产生就是因为浏览器的同源策略。它是浏览器的核心安全功能,所谓的同源,就是指域名,协议,还有端口要相同。传统的方案就是JSONP(前端处理方案),但是JSONP有很大的局限性,就是只支持GET请求,所以不能满足我们的需求,而CORS(Cross-origin-resourcesharing)跨域资源共享,就可以解决这个问题。他是一个浏览器规范,一个w3c标准,提供web服务从不同网域传来的沙盒脚本的方法,避开了浏览器的同源策略。CORS是后端的一... 继续阅读 >
202009-27 Spring Boot拦截器实现步骤及测试实例 第一步,定义拦截器:packagecom.zl.interceptor;importorg.springframework.web.servlet.HandlerInterceptor;importorg.springframework.web.servlet.ModelAndView;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassmyInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse... 继续阅读 >
202009-27 Spring Boot如何使用AOP实例解析 AOP在开发中的用处还是很广的,它的设计模式是代理模式,里面的原则就是在不改变源码的基础上增加一些新的功能。比如说项目上线了,但是发现项目中的某个模块运行的很慢,这个时候就需要打印日志去查看,那么可以使用AOP把代码动态的嵌入到项目中,如果检测完成,移除它就可以了。下面来看一下,它在SpringBoot中是如何使用的。packagecom.zl.aop.component;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.Proceedi... 继续阅读 >
202009-27 Spring Boot Redis客户端远程操作实现过程解析 在SpringBoot1.x中默认是Jedis作为客户端,但是在SpringBoot2.x后,默认就是LettuceRedis的远程连接,默认是不支持的,需要手动开启修改config文件:注释掉bind:127.0.0.1开启密码校验,去掉requireprass的注释使用jedis客户端:jedis的GitHub地址:https://github.com/xetorthio/jedis如何远程连接://构造一个jedis对象Jedisjedis=newJedis("127.0.0.1");//有密码的话要认证jedis.auth("root");//测试是否连接成功String... 继续阅读 >
202009-27 Spring Boot整合web层实现过程详解 SpringBoot中对SpringMVC的文件上传是一脉相传的,我们双击shift去搜CommonsMultipartResolver这个类,它是文件上传的一个实现类。我们先看一下源码:我们可以看到它是MultipartResolver的实现类,我们再Ctrl+H,就可以看到右侧MultipartResolver的两个实现类。第一个实现类在servlet3.0之后,什么都不用加,就可以直接使用。第二个实现类的兼容性要好一些,早期的servlet也可以使用,但需要自己额外的加依赖。那么在SpringBoot... 继续阅读 >
202009-25 基于IDEA,Eclipse搭建Spring Boot项目过程图解 如何创建一个SpringBoot项目?这里使用maven来进行依赖管理,根据常用的IDE,可以使用IDEA、Eclipse、或者访问官方网站搭建。项目搭建环境准备JDK:1.8MAVEN:3.6.3使用IDEA搭建SpringBoot项目打开IDEA,选择File-->New-->Project,然后选择SpringInitializr,点击Next输入Group-->Artifact-->Next,其他可以不用修改。选择SpringBoot版本,此处选择最新版2.2.4,根据需要的模块选择不同的starter,选择Web-->Spri... 继续阅读 >
202009-25 Springboot集成spring data elasticsearch过程详解 版本对照各版本的文档说明:https://docs.spring.io/spring-data/elasticsearch/docs/1、在application.yml中添加配置spring:data:elasticsearch:repositories:enabled:true#多实例集群扩展时需要配置以下两个参数#cluster-name:datab-search#cluster-nodes:127.0.0.1:9300,127.0.0.1:93012、添加Maven依赖<!---开箱即用,版本默认和springboot版本对应--><dependency><groupId>org.spr... 继续阅读 >
202009-25 Spring boot整合Mybatis-plus过程解析 Mybatis初期使用比较麻烦,需要很多配置文件、实体类、dao层映射、还有很多其他的配置。初期开发使用generator可以根据表结构自动生产实体类、dao层代码,这样是可以减轻一部分开发量;后期mybatis进行大量的优化,现在可以使用注解版本,自动管理dao层和配置文件。maven依赖注意:本文使用的是mysql,数据库依赖就不展示了<!--引入mvbatie-plusstarter--><dependency><groupId>com.baomidou</groupId><artifactI... 继续阅读 >
202009-25 Spring Boot Admin邮件警报整合过程解析 一、前言在SpringBootAdminServer中撒送预警邮件通知是很简单的,只需要简单的几个配置就可以了。二、代码演示1、microservice-monitor-server->pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.... 继续阅读 >
202009-24 Java Springboot如何基于图片生成下载链接 现有一些图片在服务器上的链接,在浏览器中打开这些链接是直接显示在浏览器页面的形式。现在需要生成这些图片的单独下载以及打包下载链接,即在浏览器中打开下载链接后弹出下载框提示下载。由于前端存在跨域问题,所以图片下载由后台接口完成。首先编写文件下载工具类:importjava.net.URL;importjava.net.MalformedURLException;importorg.apache.commons.io.FileUtils;publicclassFileDownloadUtil{/***下载文件---返... 继续阅读 >
202009-24 基于SpringBoot集成测试远程连接Redis服务的教程详解 前期准备Linux虚拟机或者租用的云服务器:sudo安装redis,或者docker加载redis镜像。后者需要使用docker启用redis容器。配置好redis.conf文件。注意:一定要注释#bind127.0.0.1其他详细配置可参考我另一篇文章,不过能想到集成测试redis,配置文件应该已经配置好了。/sbin/iptables-IINPUT-ptcp--dport6379-jACCEPT开放6379端口初始化SpringBoot项目使用SpringInitializr初始化一个SpringBoot项目,可以勾选NoSQL下... 继续阅读 >