spring
文章平均质量分 80
spring源码解析及带你走进spring各种机制的运用
暮色里de白雪檐
相信自己,人生之美在于当下
人生四季,寒暑交替,笑看起起落落
心若简单,生活就简单
展开
-
并发编程:ScheduledThreadPoolExecutor你真的了解吗?
创建一个配置类来定义你的ScheduledThreadPoolExecutor实例。@Bean// 设置线程池大小// 设置线程前缀// 取消任务时是否移除注意,虽然上述示例中使用了ThreadPoolTaskScheduler,它是Spring对定时任务线程池的封装,底层也是基于实现的,因此适合用于集成定时任务。原创 2024-05-25 15:28:16 · 708 阅读 · 0 评论 -
Spring Retry重试机制
重试的使用场景比较多,比如调用远程服务时,或者feign远程调用的重试,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次。用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有。话不多说,先看演示。翻译 2024-03-22 13:56:35 · 76 阅读 · 0 评论 -
【CompletableFuture】批量异步任务处理
当我们在项目中遇到很多业务同时处理,如果是串行肯定是影响性能的,这时候就需要异步执行了,说道异步肯定就有很多方案了。原创 2023-11-07 17:11:06 · 451 阅读 · 0 评论 -
获取请求头信息工具类
【代码】获取请求头信息工具类。原创 2023-10-12 18:20:07 · 137 阅读 · 0 评论 -
【拦截器、过滤器、springAop】那些不为人知的隐秘
前后端交互使用密文传输,实现aop动态密文加解密原创 2023-02-20 10:28:06 · 2965 阅读 · 0 评论 -
深入理解spring三级缓存解决循环依赖的设计思路
spring循环依赖解决方案的深入分析原创 2023-01-31 16:00:58 · 733 阅读 · 0 评论 -
浅谈设计模式-建造者模式
之前几篇博文已经解释过其他的设计模式了,这里将为大家在实际项目中如何使用建造者模式主要解决: 主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。优点:1、产品必须有共同点,范围有限制。2、如内部变化复杂,会有很多的建造类。今天,我们再来学习另外一个比较常用的创建型设计模式,Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模转载 2022-05-26 16:14:33 · 190 阅读 · 0 评论 -
如何真正的灵活使用springboot自定义注解进行自动装配?
各位铁子们,说道自动装配,大家可能都已经滚瓜烂熟了,自动装配经常看到或者日常开发中随处可见,但是有几个真正的是是实战过呢,我怕说的实战可不是简单按照百度或者视频上按照模板套一个哟,如果是是这样也太小看自动装配了,我指的是你为自己的项目需要而开发的可插拔式的jar或者开关性的配置类,不一定按照模板来实现,如果懂我说这句的意思就会知道如果你有时候为了实现一个自动装配的配置类按照模板来实现会创建多余的类,废话不多说,接下来大家对号入座吧基础知识了解@Import注解到底知多少?导入配置的三种类型带有@C原创 2022-03-08 17:05:19 · 409 阅读 · 0 评论 -
Spring到底何时为使用事务注解的bean创建代理 ?
今天说这个问题之前,大家需要知道一个热知识,那就是一个类中的某个方法被赋予注解@Transactional,则无法在本类中进行调用,否则事务失效,那是因为,无法创建代理类,也就是无法使用事务特性,毕竟spring的事务是通过AOP中的代理模式进行实现的,那么问题来了?spring的bean何时被创建代理类呢,又怎么知道的呢,如果@Transactional放在类上,那就可以理解bean在进行实例化的时候就知道了,但是放在方法上呢?其实也是通过反射的方式给这个对象进行生成代理类的,接下来就重点讲解下这个问题转载 2022-01-11 22:58:17 · 746 阅读 · 0 评论 -
【事务传播行为剖析】Transactional注解的几个参数--事务传播控制--事务隔离级别--异常与回滚
控制事务传播----propagation属性@Transactianal注解有一些属性,见Spring-Framework-Reference Table17.3 Transactional-settings@Transactional(propagation=Propagation.REQUIRED) //控制事务传播。默认是Propagation.REQUIRED@Transactional(isolation=Isolation.DEFAULT)转载 2021-11-26 15:54:10 · 855 阅读 · 0 评论 -
Spring 自定义注解后,如何获取添加了该注解的所有类?终极解答
问题需求通常在业务开发时,我们可能会用到自定义注解(自定义注解的使用和解析,本章暂不介绍)。在使用自定义注解后,我们需要获取使用了该注解的所有类,然后做一个验证。那么、问题来了,我们如何获取被某注解标注的所有类呢?请欣赏下文具体实现定义两个注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documentedpublic @interface RespMegTypeSup { public String val翻译 2021-11-05 17:27:14 · 4358 阅读 · 0 评论 -
浅谈springboot启动时执行:@PostConstruct 、CommandLineRunner、ApplicationRunner、ApplicationListener区别
使用场景我们在开发过程中会有这样的场景:需要在项目启动后执行一些操作,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,工厂类初始化等。我们会有多种的实现方式,例如@PostConstruct 、CommandLineRunner、ApplicationRunner、ApplicationListener都可以实现在springboot启动后执行我们特定的逻辑,接下对比下他们的区别@PostConstruct该注解被用来修饰一个非静态的void方法,被@PostConstruct修饰的方原创 2021-10-26 15:28:20 · 3078 阅读 · 0 评论 -
理解Java反射的正确姿势-基础版
反射简介反射是Java的高级特性之一,但是在实际的开发中,使用Java反射的案例却非常的少,但是反射确实在底层框架中被频繁的使用。比如:JDBC中的加载数据库驱动程序,Spring框架中加载bean对象,以及态代理,这些都使用到反射,因为我们要想理解一些框架的底层原理,反射是我们必须要掌握的。理解反射我们先从他的概念入手,那么什么是反射呢?反射就是在运行状态能够动态的获取该类的属性和方法,并且能够任意的使用该类的属性和方法,这种动态获取类信息以及动态的调用对象的方法的功能就是反射。实现上面操作.原创 2020-12-14 15:03:03 · 137 阅读 · 0 评论 -
Spring事件监听机制的使用和原理解析
Spring的context包是对于beans包的功能扩展,比如在BeanFactory的基础容器之上扩展为了ApplicationContext上下文。而ApplicationContext处理包含了BeanFactory的全部基础功能之外,还额外提供了大量的扩展功能,本文主要分析下Spring提供的事件监听机制,这里就使用到了设计模式中的观察者设计模式。话不多说,直接正文Spring事件监听机制的定义使用过MQ的或者了解观察者设计模式的同学应该大致都了解,实现事件监听机制至少四个核心:事件、事件原创 2020-10-23 12:02:49 · 2239 阅读 · 3 评论 -
spring事务管理实现原理-源码篇
引用场景就是这两个方法,第一个方法中引用了第二个方法,都用@Transactional注解。debug调用shopping方法,这就是我们平时使用声明式事务进行处理的(也可以用编程式)但是原理是什么呢?又是如何关联到JDBC的事务管理呢?接下来大家带着这两个问题出发:引子在Spring中,事务有两种实现方式:编程式事务管理: 编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。申明式事务管理: 基于Spring AOP实现。其本质是对方法前后进行拦截,然.原创 2020-10-06 14:21:43 · 957 阅读 · 0 评论 -
Spring源码解读之——组件注册(随笔)
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/81605431@ComponentScanvalue:指定要扫描的包excludeFilters = Filter[] :指定扫描的时候按照什么规则排除那些组件includeFilters = Filter[] :指定扫描的时候只需要包含哪些组件FilterType.ANNOTATION:按照注解FilterType.ASSIGNABLE_TYPE:按照给定的类型;Filt转载 2020-10-04 16:04:32 · 102 阅读 · 0 评论