SpringBoot 整合 AOP 文章目录1、导包2、编写切面类3、注解解释4、自定义注解Spring的AOP是对方法的增强,通过动态代理的方式去实现。1、导包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <versio
SpringBoot整合MQTT SpringBoot整合MQTT1、导包 <!-- MQTT--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-integration</artifactId> <version> 2.1
windows下的Mosquitto的安装和运行 1、下载与安装下载地址:官网地址,傻瓜式下载与安装,选择你自己合适的地方安装软件。在安装完成后,在你的安装位置会有一个Mosquitto文件夹,里面有一堆文件,我们需要关心的只有三个,如下:mosquitto.conf:具体配置信息aclfile.example:topic配置pwfile.example:用户密码配置2、运行在安装好之后,便可以直接运行。MQTT运行有三个组成:代理(Broker),订阅(subscriber),推送(publisher),所以我们需要开启三个cmd窗
一个SpringBoot项目的开始 Java后端的本质就是获取上传的数据、处理后保存到数据库、有需求时再获取数据并返回给前端。一个好的项目结构是一个好的开始,我做了以下操作,分别是数据获取绑定参数校验统一异常处理统一返回结果状态码枚举一些基础类数据获取绑定:SpringMVC中有三个注解可以获取数据并绑定到参数上:@RequestParam:获取url或者请求体中数据,但请求体的Content-Type需要为application/x-www-form-urlencoded格式,它是POST请求的默认格式。@
Spring Security身份认证、权限验证、异常处理、自动登录流程整理 SpringSecurity是一系列filter,我们看功能实现,看你具体Filter就可以了。我们需要关注的过滤器大致有4个:UsernamePasswordAuthenticationFilter:登录认证过滤器FilterSecurityInterceptor:权限认证过滤器ExceptionTranslationFilter:登录/权限认证失败处理器RememberMeAuthenticationFilter:自动登录过滤器1、UsernamePasswordAuthenticati
一个SpringBoot项目的项目结构 一个后端项目我们应该考虑如下问题:①:参数的接受及校验;②:统一返回体;③:统一异常处理;④:代码生成器1、参数的接受及校验我们可以通过自定义接受对象和返回对象来接受这个问题,再通过@RequestBody,@RequestParam和@PathVariable注解来进行参数获取。参数校验:我们可以通过validation来解决这个问题,我们主要做三步:引入组件: <dependency> <groupId>org.s
Spring Security用户登录认证流程 Spring Security的认证流程Spring Security的登录认证流程始于AbstractAuthenticationProcessingFilter,默认使用类为UsernamePasswordAuthenticationFilter,当然也可以自己去自定义。public abstract class AbstractAuthenticationProcessingFilter { ... public void doFilter(ServletRequest req, Ser
Spring:事件发布机制 起因是在看Spring Security时,看到如下代码 protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { ... if (this.eventPublisher != null)
Spring Security RememberMe 自动登录流程 Spring Security 是根据cookie来完成自动登录功能的,所以我将解析分为两部分:何时让请求带上cookie;如何去解析cookie。1、何时添加cookie还记得处理登录的过滤器嘛,没错,一切都是从哪里开始,AbstractAuthenticationProcessingFilter。我们先去扎到它的doFilter()方法,如下: private void doFilter(HttpServletRequest request, HttpServletResponse respons
Spring Security 授权过程 过滤器FilterSecurityInterceptor是一个请求处理过程中安全机制过滤器链中最后一个filter,它执行真正的HTTP资源安全控制,我们直接找到doFilter()方法。FilterInvocation你可以看成带有HttpServletRequest,HttpServletResponse,FilterChain属性的类,也就是过滤器上下文对象。public class FilterSecurityInterceptor extends AbstractSecurityInterce
Spring Security登录流程 1、Authentication存放用户信息类的顶层接口为Authentication,我们从这个类往下找,发现常用的实现类有UsernamePasswordAuthenticationToken。我们对与之关联的5个类进行观察:AuthenticationAbstractAuthenticationTokenUsernamePasswordAuthenticationTokenGrantedAuthoritySimpleGrantedAuthority我们可以发现,
Spring Security框架的快速开始 1、项目简单开始1、导包采用spring boot + spring security的方式 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>2、编写c
单例模式 如果让你写一个单例模式的案例,你会怎么写,在我的印象中单例模式嘛,本意就是在这个容器中,只能存在一个类的实例,然后我会这么写:public class SingleTest { private static final SingleTest single = new SingleTest(); private SingleTest(){} public SingleTest instance(){ return single; }}
ModelMapper工具类的简单实用 通常,我们需要将数据库查询出来的数据封装到XXXDTO中再传给前端,如果是我们自己来进行封装的话,我们就需要用到繁杂的getter/setter来进行操作,不过有现成的轮子为啥不用呢?ModelMapper,就是这么一个工具,下面我们就来看下它的简单实用。在进行演示之前,先添上工具的官网:点击这里进入ModelMapper官网好,现在开始演示:由于它是一个额外的轮子,第一步,我们需要导入该jar包<dependency> <groupId>org.modelmapper&
Java-11:IO流 关于Java IO,我会快速想到如下几点:字节流、字符流相应的接口及实现类字节流与字符流之间的转换装饰器模式字节流和字符流的区别就是如何去看待一段二进制序列,我们都知道计算机中的最小单位是比特(bit),一个字节 = 8bit,一个字符 = 2字节 = 16bit(编码为utf-8)。一段二进制序列过来,如何我们不告诉它怎么解读它,你让它怎么办,随机选择?IO流就是对数据传输的抽象,IO流的分为输入流和输出流。输入流输出流字节流InputStreamOutputSt
Java-10:ConcurrentHashMap 看一个类先来看它的类声明,JDK在ConcurrentHashMap类上的申明写到:ConcurrentHashMap是一个线程安全的,支持高性能、高并发,其功能与HashTable类似在进行访问操作时并不需要锁着整个表,即使是有其他线程在进行更新或者修改操作1、继承结构在看继承继承结构的时候,要点就是接口通常为抽象方法,Abstract类通常实现常用类,然后实现一些普通类。Map接口:定义通用的map方法AbstracMap接口:实现一些常用的map方法Serializable接口:标
Java-09:Hashtable、HashMap、TreeMap有什么不同? 惯例,看类对比,先来看下继承结构关系1.继承图谱Map接口表示这个集合是一个键值映射的数据结构,Map不能包含重复的Key,每个键只能映射到一个值。Map提供了三种遍历集合的方法,分别是entrySet(),KeySet(),values()来得到Map中的数据,除此之外,还提供了很多操作Map的方法,如put(),remove(),get(Object)等。Dictionary抽象类:Map接口替代了它AbstractMap抽象类:实现Map接口的常用方法SortMap接口:提供排序的基本方法
Java-08:Vector、ArrayList、LinkedList有何区别? 三个集合都是我们常用的数据集合,在看它们之间的区别前,我们先来看看它们的继承结构。1、继承结构图Collection接口是层次结构中的根接口,构成Collection的单元称为元素。Collection接口提供了添加元素,删除元素,管理数据的方法 。List接口表示这是一个元素有序,可以重复,可以为null的集合,那它又是凭借什么实现有序的。List数据结构在内存中会开辟一块连续的空间,然后将内存地址与索引对应。Queue接口在Collection基础上添加操作队列方法,Deque接口是一个双向队
Java-07:int和Integer有什么区别? 7、int 和 Integer有什么区别?1、数据类型iint是基本数据类型,保存在栈中;Integer是引用类型,在堆中申请内存存放数据,在栈里申明引用指向堆中的内存地址。基本数据类型在栈中怎么存储?int a = 10;int b = 10;JVM有一个局部变量表用来保存引用,如上,建立引用a和引用b,再申请两块内存来存放数据,由引用a和引用b指向它们的内存地址。在Java中, "=="符号是用于比较引用的值,这话没毛病。那引用类型在堆中怎么存储?Java普通对象在HotSpot虚拟机
Java-06:动态代理 6、动态代理谈及动态代理,难免避不开Java的反射技术。Java的反射机制:在程序运行时通过加载已知的class,从而可以操作类或者属性和方法。Java是先编译再运行的语言,Java源文件都是要先经过编译生成class文件,当程序需要动态加载某些类时,它就可以通过反射机制来创建对象并调用方法。Java 反射api的使用方法在这里不做赘述,不懂的同学可以移驾这里→反射api的使用说完反射机制,我们来说说动态代理在常用框架Spring中支持模式:JDK Proxy 或者 cglib,不过先来看下动态代