![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring全家桶
文章平均质量分 75
记录自己的学习历程
胡小冰
这个作者很懒,什么都没留下…
展开
-
SpringBoot整合Redis及Redis工具类撰写
1、创建一个SpringBoot项目,导入redix依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency>2、application.proper原创 2021-08-13 02:53:25 · 157 阅读 · 2 评论 -
redis工具类
import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.util.CollectionUtils;public class RedisUtil { private Redi原创 2021-08-13 02:17:31 · 121 阅读 · 0 评论 -
Swagger文档转Word 文档
GitHub 地址:https://github.com/JMCuixy/swagger2word转载作品,出处:http://www.cnblogs.com/jmcui/p/8298823.html一、前言为什么会产生这个需求呢?我们公司作为乙方,老是被客户追着要一份API文档,当我们把一个 Swagger 文档地址丢给客户的时候。客户还是很不满意,嫌不够正式!!死活坚持要一份 word 文档 。然后领导给了个接口模板,就把这个活交给我了…我去,近10个微服务,几百个接口,这不得要了我的命啊(最原创 2021-08-12 02:46:04 · 1414 阅读 · 1 评论 -
SpringBoot整合分布式Dubbo+Zookeeper
1.理论概述1.1.分布式分布式系统是若干独立计算机的集合,这些计算机对于用户来讲就像单个系统。由多个系统集成成一个整体,提供多个功能,组合成一个板块,用户在使用上看起来是一个服务。(比如淘宝网)。起源分布式系统出现的原因是:用多个廉价的、普通的机器完成单个计算机无法完成的计算、存储任务分布式使用只有单个节点处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(内存、磁盘、CPU)高昂得不偿失的时候,应用程序也不能进一步优化的时候,才考虑分布式。因为分布式系统是建立在网络之上的软件系原创 2021-08-11 03:01:46 · 221 阅读 · 4 评论 -
如何给老婆解释什么是RPC
前言博主连对象都没有,何来老婆?new一个就好了。一个阳光明媚的早晨,老婆又在翻看我订阅的技术杂志。“老公,什么是RPC呀,为什么你们程序员那么多黑话!”,老婆还是一如既往的好奇。“RPC,就是Remote Procedure Call的简称呀,翻译成中文就是远程过程调用嘛”,我一边看着书,一边漫不经心的回答着。“啥?你在说啥?谁不知道翻译成中文是什么意思?你个废柴,快给我滚去洗碗!”“我去。。。”,我如梦初醒,我对面坐着的可不是一个程序员,为了不去洗碗,我瞬间调动起全部脑细胞,星辰大海在我脑原创 2021-08-11 00:59:22 · 207 阅读 · 8 评论 -
如何实现一个简单的RPC
在如何给老婆解释什么是RPC中,我们讨论了RPC的实现思路。那么这一次,就让我们通过代码来实现一个简单的RPC吧!RPC的实现原理正如上一讲所说,RPC主要是为了解决的两个问题:解决分布式系统中,服务之间的调用问题。远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。还是以计算器Calculator为例,如果实现类CalculatorImpl是放在本地的,那么直接调用即可:现在系统变成分布式了,CalculatorImpl和调用方不在同一个地址空间,那么就必须要进行远程原创 2021-08-11 01:09:26 · 425 阅读 · 0 评论 -
SpringBoot实现异步、邮件、定时任务
1、SpringBoot实现异步方法日常开发中涉及很多界面与后端的交互响应,都不是同步的,基于SpringBoot为我们提供了注解方式实现异步方法。使得前端的请求响应与后端的业务逻辑方法实现异步执行。提升了客户的体验。不由得说一句,SpringBoot的封装的确是精妙强大,以前需要多线程、Ajax实现异步,而SpringBoot底层封装之后,两个注解就Over了!①需要在SpringApplication执行类上开启异步,使用@EnableAsync:@SpringBootApplication@E原创 2021-08-10 21:28:01 · 154 阅读 · 0 评论 -
SpringBoot:整合Swagger3.0-定制RESTful与统一接口返回值(2020最新最易懂)
一,整合Swagger3.0随着Spring Boot、Spring Cloud等微服务的流行,在微服务的设计下,小公司微服务工程jar小的几十个,大公司大的工程拆分jar多则几百上万个,这么多的微服务必定产生了大量的接口调用。而接口的调用就必定要写接口文档(由开发人员编写)。存在的问题:(面对多个开发人员或多个开发团队)项目开发接口众多,细节,复杂,且多样化,高质量地创建接口文档费时,费力。随着项目的进行,不可避免整改和优化,需要不断的修改接口实现,伴随着也需要同时修改接口文档,管理不方便不说,还原创 2021-08-10 17:12:03 · 3075 阅读 · 4 评论 -
SpringSceurity(5)---短信验证码登陆功能
一、短信登录验证机制原理分析了解短信验证码的登陆机制之前,我们首先是要了解用户账号密码登陆的机制是如何的,我们来简要分析一下Spring Security是如何验证基于用户名和密码登录方式的,分析完毕之后,再一起思考如何将短信登录验证方式集成到Spring Security中。1、账号密码登陆的流程一般账号密码登陆都有附带 图形验证码 和 记住我功能 ,那么它的大致流程是这样的。1、 用户在输入用户名,账号、图片验证码后点击登陆。那么对于springSceurity首先会进入短信验证码Filter原创 2021-08-08 23:35:02 · 429 阅读 · 0 评论 -
SpringSceurity(4)---短信验证码功能实现
有关SpringSceurity系列之前有写文章1、SpringSecurity(1)—认证+授权代码实现2、SpringSecurity(2)—记住我功能实现3、SpringSceurity(3)—图形验证码功能实现一、思考1、设计思路在获取短信验证码功能和图形验证码还是有很多相似的地方,所以这里在设计获取短信验证的时候,将之前开发好的的图形验证码进一步整合、抽象与重构。在获取验证码的时候,它们最大的不同在于: 图形验证码是通过接口返回获取給前端。而短信验证码而言是通过第三方API向我们手原创 2021-08-08 23:16:25 · 157 阅读 · 0 评论 -
SpringSceurity(3)---图形验证码功能实现
前言从狂神的视频中只学了认证授权,记住我等功能,他没有录制关于图形验证码功能的视频,在看了前两篇文章后,看到关于图片验证码功能的博客,就一起都学了吧。写着博客记录着,忘了也没关系,以后那天用到了在回来看看。原文:https://www.cnblogs.com/qdhxhz/p/12791083.html有关springSceurity之前有写过两篇文章:1、SpringSecurity(1)—认证+授权代码实现2、SpringSecurity(2)—记住我功能实现这篇我们来讲图形验证码功能实现原创 2021-08-08 22:54:10 · 174 阅读 · 0 评论 -
SpringSecurity(2)---记住我功能实现
前言:我将代码下载尝试运行后,出现了连环报错。观察后我怀疑应该是版本问题,原博主的程序写的比较早,而如今版本也更新好几次了,所以我怀疑是程序版本的问题。但这只会影响程序的运行,并不会影响我对Security的学习。原文地址:https://www.cnblogs.com/qdhxhz/p/12783471.html上一篇博客实现了认证+授权的基本功能,这里在这个基础上,添加一个 记住我的功能。上一篇博客地址:SpringSecurity(1)—认证+授权代码实现上一遍博客的 用户数据 和 用户原创 2021-08-08 20:33:40 · 156 阅读 · 0 评论 -
SpringSecurity(1)---认证+授权代码实现
安全简介在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中。市面上存在比原创 2021-08-08 04:44:21 · 1014 阅读 · 2 评论 -
shiro---了解权限管理
了解权限管理一、概念1、什么是权限管理只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户认证和授权两部分。(1)用户认证用户认证,用户去访问系统,系统要验证用户身份的合法性。最常用的用户身份验证的方法:1、用户名密码方式、2、指纹打卡机、3、基于证书验证方法。。系统验证用户身份合法,用户方可访问系统的资源。关键对象subject:主体,理解为用户,可能是程序,都要去访问系统的资源,原创 2021-08-08 04:20:46 · 387 阅读 · 0 评论 -
springboot整合Druid+mybatis
DruidSpringboot集成Druid方案:一个是在POM中直接配置druid-spring-boot-starter,不用写任何代码;一个是配置druid,写几行代码,可以加入;在方案一基础上加入stat、wall后进行验证登录。先献上github代码地址:https://github.com/yudiandemingzi/spring-boot-many-data-source代码拉下来换下自己的mysql数据库地址,就可以直接运行。Druid的优点很明显,它的可视化界面可以监控Sql语句.原创 2021-08-07 18:07:20 · 1230 阅读 · 0 评论 -
SpringBoot 整合JDBC
SpringData简介对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。Sping Data 官网:https://spring.io/projects/spring-data转载 2021-08-06 22:27:02 · 903 阅读 · 1 评论 -
i8n页面国际化
1、统一 properties 编码首先在IDEA中统一设置properties的编码为UTF-8编写国际化配置文件,抽取页面需要显示的国际化页面消息。我们可以去登录页面查看一下,哪些内容我们需要编写国际化的配置!2、编写 i18n 国际化资源文件在resources目录下新建一个 i18n 包,其中放置国际化相关的配置什么是i18n?类似的还有K8S其中新建三个配置文件,用来配置语言:login.properties:无语言配置时候生效login_en_US.proper原创 2021-08-05 22:34:38 · 888 阅读 · 3 评论 -
SpringBoot 简单运行原理
我们之前写的HelloSpringBoot,到底是怎么运行的呢,Maven项目,我们一般从pom.xml文件探究起;运行原理流程图:pom.xml父依赖其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>转载 2021-08-05 10:15:34 · 317 阅读 · 1 评论 -
yaml语法学习及JSR303数据校验
配置文件SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application.properties语法结构 :key=valueapplication.yml语法结构 :key:空格 value配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;比如我们可以在配置文件中修改Tomcat 默认启动的端口号!测试一下!server.port=8081yaml概述YAML是 “YAML Ain’t a.原创 2021-08-05 00:09:06 · 200 阅读 · 2 评论 -
过滤器(Filter)与拦截器(Interceptor )区别(转)
原文地址:https://www.cnblogs.com/junzi2099/p/8022058.html#_labelTop原文地址:https://www.cnblogs.com/junzi2099/p/8022058.html#_labelTop原文地址:https://www.cnblogs.com/junzi2099/p/8022058.html#_labelTop目录过滤器(Filter)拦截器(Interceptor)拦截器(Interceptor)和过滤器(Filter)的区别拦截.原创 2021-08-05 00:08:53 · 148 阅读 · 0 评论 -
Ajax 完整教程(转)
Ajax 完整教程ajax应用篇原创 2021-08-04 09:15:41 · 69 阅读 · 0 评论 -
初次整合SSM框架
整合SSM环境要求环境:IDEAMySQL 8.0.xTomcat 9Maven 3.6数据库环境创建一个存放书籍数据的数据库表CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` (`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',`bookName` VARCHAR(10转载 2021-08-04 08:52:47 · 101 阅读 · 0 评论 -
文件上传和下载
准备工作文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服..转载 2021-08-04 08:16:37 · 104 阅读 · 0 评论 -
自定义拦截器
过滤器与拦截器的区别:拦截器是AOP思想的具体应用。过滤器servlet规范中的一部分,任何java web工程都可以使用在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截拦截器拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的自定义拦截器那如何实现拦截器呢?想要自定义拦截器,必须实现 HandlerInterc转载 2021-08-04 08:08:21 · 1140 阅读 · 0 评论 -
Json交互处理
还是跟着狂神的视频边学边做1、什么是JSON?JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示,例如字符串、数字.转载 2021-08-02 00:15:58 · 72 阅读 · 0 评论 -
@RequestMapping 用法详解之地址映射(转)
引言:前段时间项目中用到了RESTful模式来开发程序,但是当用POST、PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request.getReader() 打出的数据里确实存在浏览器提交的数据。为了找出原因,便对参数绑定(@RequestParam、 @RequestBody、 @RequestHeader 、 @PathVariable)进行了研究,同时也看了一下HttpMessageCon转载 2021-08-01 22:08:13 · 261 阅读 · 0 评论 -
自定义过滤器
package com.kuang.filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.UnsupportedEncod原创 2021-08-01 21:38:21 · 58 阅读 · 0 评论 -
springMVC转发与重定向
springMVC转发与重定向SpringMvc请求方式分为转发、重定向两种,是用forward和redirect关键字在controller层进行处理。下面代码实现了这两种不同的请求方式:import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;import org.springframe转载 2021-08-01 20:56:17 · 297 阅读 · 0 评论 -
Hello SpringMVC及工作原理简单理解
这里用的是狂神的项目,我拿过来学习学习。项目结构:配置版1、新建一个Moudle , springmvc-02-hello , 添加web的支持!2、确定导入了SpringMVC 的依赖!3、配置web.xml , 注册DispatcherServlet<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="ht原创 2021-08-01 11:14:15 · 121 阅读 · 3 评论 -
Spring框架IOC容器和AOP解析
Spring框架IOC容器和AOP解析AOP 你想干什么 IOC 你服务什么spring - ioc和aop原创 2021-08-01 00:16:43 · 73 阅读 · 0 评论 -
Spring事务管理详解
Spring事务管理详解Spring事务和MySQL事务详解面试原创 2021-08-01 00:07:11 · 55 阅读 · 0 评论 -
Spring整合Mybatis的两种方式
1、回忆mybatis步骤:导入相关jar包1. junit2. mybatis3. mysql数据库4. spring相关5. aop织入器6. mybatis-spring整合包【重点】在此还导入了lombok包。7. 配置Maven静态资源过滤问题! <dependencies> <dependency> <groupId>junit</groupId> <原创 2021-08-01 00:05:45 · 178 阅读 · 0 评论 -
Spring AOP (下) (转载)
Spring AOP (上)(转载)利用方式一的配置起来,可见代码还是非常的厚重的,定义一个切面就要定义一个切面类,然而切面类中,就一个通知方法,着实没有必要。所以Spring提供了,依赖aspectj的schema配置和基于aspectj 注解方式。这两种方式非常简介方便使用,也是项目中普遍的使用方式。梳理之:4、方式二:schema配置a、业务类:View Code /** * 业务类 * * @author yanbin * */public class AspectB.转载 2021-07-31 17:18:02 · 59 阅读 · 0 评论 -
Spring AOP (上)(转载)
最近在学Spring,接触到AOP,再查看了一些相关内容后觉得这篇文章写的挺好的,所以转载过来,方便以后的重温,并推荐给大家。 原文地址:Spring AOP (上)工作忙,时间紧,不过事情再多,学习是必须的。记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习。第一:为了更充实自己,保持进步状态。第二:为了提升技术,提高开发能力。第三:保持程序员对技术和学习的热情,工作的激情。程序员还是需要把基础打扎实,修炼自己的内功。” 所以赶紧把学习的东西总结一下,加深印象。之前有说了下.转载 2021-07-31 17:12:55 · 91 阅读 · 0 评论 -
Spring--------AOP
AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代原创 2021-07-31 16:48:13 · 132 阅读 · 4 评论 -
动态代理练习以及万能动态代理模板
举例:房东、租客、中介项目结构:静态代理模式:Landlordpackage demo01;public class Landlord implements Rent{ public void rent(){ System.out.println("房东要出租房子了!"); }}Rent:package demo01;public interface Rent { public void rent();}Proxy;packa原创 2021-07-31 10:44:45 · 169 阅读 · 0 评论 -
@Autowired @Resource @Qualifier的区别
@Autowired @Resource @Qualifier的区别原创 2021-07-30 18:00:20 · 103 阅读 · 0 评论