![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring Framework
文章平均质量分 88
Spring 框架学习
灵颖桥人
长风破浪会有时,直挂云帆济沧海。
展开
-
Spring AOP 通知执行顺序《三》不同切面相同类型通知顺序
同一切面中的同一类型通知的执行顺序 Spring 官方文档中是这样描述的:当在不同切面定义的两条相同类型通知都需要在同一连接点上运行时,除非另行指定,否则执行顺序是不确定的。 您可以通过指定优先级来控制执行顺序。 通过在切面类中实现 org.springframework.core.Ordered 接口或使用 @Order 注解对其进行注解。 给定两个切面,从 Ordered.getValue()(或 @Order 注解值)返回较低值的切面具有较高的优先级。@Order 注...原创 2021-05-17 18:24:35 · 1116 阅读 · 3 评论 -
Spring AOP 通知执行顺序《二》同一切面相同类型通知
同一切面中的同一类型通知的执行顺序 Spring 官方文档中是这样描述的:当在同一 @Aspect 类中定义的同一类型的两条通知(例如,两个@After 通知方法)都需要在同一连接点上运行时,顺序是不明确的(因为没有办法通过反射来获取javac编译类的源代码声明顺序)。考虑在每个 @Aspect 类中的每个连接点将这样的两个通知方法折叠成一个通知方法,或者将通知方法片段重构成单独的 @Aspect 类,您可以通过 Ordered 接口或 @Order 在切面级别进行排序。测试采用S...原创 2021-04-17 13:57:41 · 431 阅读 · 0 评论 -
Spring AOP 通知执行顺序《一》同一切面不同类型通知
官方文档Spring官网文档非常详细,关于 AOP的执行顺序描述【Version 5.3.6】:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-ataspectj-advice-ordering推荐看链接文档原文,简单翻译一下: “当多条通知都希望在同一连接点上运行时会发生什么? Spring AOP遵循与AspectJ相同的优先级规则来确定通知执行的顺序。 优先级最高...原创 2021-04-16 00:40:01 · 903 阅读 · 1 评论 -
cglib 和 Spring AOP 的一些学习思考
我们都知道,Spring AOP 是基于动态代理实现的,实现方式有两种:JDK 动态代理 和 cglib 生成代理类。JDK 动态代理这里不多说,我们都知道 cglib 是基于继承实现对目标类的代理的。本文使用 Spring 版本:5.2.0.RELEASEAOP 自调用问题举一个 AOP 自调用的例子:定义切面和切点:@Aspect@Componentpublic class AopConfig { /** * UserManager中的所有方...原创 2021-04-01 19:36:53 · 422 阅读 · 0 评论 -
Spring Statemachine 简介
Spring Statemachine 简介 Spring Statemachine是Spring官方提供的一个框架,供应用程序开发人员在Spring应用程序中使用状态机。支持状态的嵌套(substate),状态的并行(parallel,fork,join)、子状态机等等。官网地址:https://projects.spring.io/spring-statemachine/本文使用版本:2.2.0.RELEASESpring Statemachine 项目模块使用 Sp...原创 2020-10-24 22:15:41 · 16538 阅读 · 1 评论 -
Spring请求路径带参数URL使用注解的写法
调用外部平台http接口,Post请求,url 为路径带有参数的形式:http://xxxxxx.com/openApi/auth/getUserAuth?version=v1.0使用 Retrofit 框架(本文使用的2.6.2版本)发送Post请求,可以在 @Post 注解中直接带上参数,如下: @POST("auth/getUserAuth?version=v1.0") Call<McgjResponse<UserAuthResponseDTO>>原创 2020-07-08 23:28:51 · 3271 阅读 · 0 评论 -
Spring 手动注册bean
一般情况下,我们Spring应用中的bean都是通过注解或者xml注入到容器中的,有些情况下我们可能想手动往容器中注入bean,即编程方式注入bean。 本文所使用源码包版本:spring-beans-5.0.5.RELEASE.如何注册? Spring 中用BeanDefinition接口描述一个bean,Spring容器中用Map<Strin...原创 2020-05-02 22:31:14 · 17564 阅读 · 5 评论 -
Spring @Async 注解的使用以及原理(二)
在上一篇中《Spring @Async 注解的使用以及原理(一)》简单介绍了@Async的使用,本篇简单分析一下它的源码以及实现异步的机制。 我们用spring-context-5.0.5.RELEASE.jar包,先看一下@Async的源码:package org.springframework.scheduling.annotation;import j...原创 2020-05-01 23:20:45 · 2452 阅读 · 3 评论 -
Spring Bean加载过程
Spring bean的加载过程的文章有很多。但是一些文章贴的代码太多了,一些文章图片太简单又反映不出代码。索性自己整理了一个Spring 单例bean的加载流程图,方便个人记忆。使用的版本:spring-beans-5.0.5.RELEASE.流程图:图的左边是bean创建的大致流程,右边的文字代表对应的核心代码位置以及个人的理解。有问题的话,还请多多指出~...原创 2020-04-17 22:05:39 · 3678 阅读 · 2 评论 -
Spring AOP 切点指示符中execution和args的区别
一、简单介绍 Spring AOP中支持的切点指示符(PCD)有以下:execution、within、this、target、args、@target、@args、@within、@annotation和bean。Spring 官网的介绍:execution: For matching method execution join points. This is ...原创 2020-03-21 17:54:03 · 1896 阅读 · 0 评论 -
Spring中@Bean注解和@Configuration、@Component注解组合使用的差异
一、@Bean的“full”模式和“lite”模式 在一般常见情况下,@Bean注解在@Configuration类中声明,称之为“full”模式;当@Bean注解和@Component注解组合使用时,称之为“lite”模式。这两种组合使用的情况,初次看文档时没看明白,多看了几次又跑了测试代码,才大致理解了区别。二、两种模式的差异 如果只是把@Be...原创 2020-03-06 00:12:16 · 4991 阅读 · 0 评论 -
Spring 生命周期回调机制
一、Spring 生命周期回调机制可选方式Spring官方文档注明从Spring 2.5开始,您可以使用三种方式来控制Bean生命周期行为: InitializingBean和DisposableBean回调接口 自定义init()和destroy()方法 @PostConstruct 和 @PreDestroy 注释。您可以组合这些机制来控制给定的 bean。 ...原创 2020-03-01 00:01:34 · 1513 阅读 · 0 评论 -
Spring Bean作用域【译】
官方的文档有些说明的很清楚,大致浏览一遍很有收获。地址:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes1.5. Bean Scopes 创建bean定义时,将创建一个配方(recipe,怎么翻译好呢?)来...翻译 2020-02-29 16:28:28 · 200 阅读 · 0 评论 -
Spring Bean 循环依赖解决简单分析
Spring Bean 循环依赖解决简单分析本文Spring版本:5.0.5.RELEASE什么是循环依赖: 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A 依赖 B,B 又依赖 A;或者A依赖于B,B依赖于C,C又依赖于A。Spring 循环依赖的处理方式:①构造器的循环依赖:这种依赖spring是处理不了的,直 接抛...原创 2020-02-13 15:32:09 · 951 阅读 · 0 评论 -
Spring @Async 注解的使用以及原理(一)
Spring中用@Async注解标记的方法,称为异步方法,它会在调用方的当前线程之外的独立的线程中执行,其实就相当于我们自己new Thread(()-> System.out.println("hello world !"))这样在另一个线程中去执行相应的业务逻辑。本篇先只讲@Async的使用,后面会分析它实现原理。 @Async注解使用条件:@Async注解一般用...原创 2018-08-30 00:17:11 · 70126 阅读 · 3 评论 -
@RequestBody 和 @RequestParam可以同时使用
@RequestParam和@RequestBody这两个注解是可以同时使用的。网上有很多博客说@Requestparam 和@RequestBody不能同时使用,这是错误的。根据HTTP协议,并没有说post请求不能带URL参数,经验证往一个带有参数的URL发送post请求也是可以成功的。 自己个人实际验证结果:package com.example.model;import...原创 2018-07-03 22:46:11 · 84836 阅读 · 24 评论