自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Resilience4j 断路器学习

/</</</

2024-07-15 21:20:29 207

原创 Spring @Scheduled学习

我们也可以直接往 Spring 容器中自定义注入 ThreadPoolTaskScheduler 对象,只不过需要注意它的 beanName 必须为 taskScheduler;@Bean。

2024-07-13 23:37:32 1202 1

原创 Kafka-02 @KafkaListener学习

SpringBoot 和 Kafka 搭配使用的场景,引入 spring-kafka 即可;</</</</

2024-07-10 11:25:20 1189

原创 Java 多线程-3 FutureTask学习

FutureTask 实现了 Runnable 接口和 Future 接口;FutureTask 也是一个 Runnable 对象;

2024-07-09 09:57:16 820

原创 Java 多线程-3 FutureTask学习

FutureTask 实现了 Runnable 接口和 Future 接口;FutureTask 也是一个 Runnable 对象;

2024-07-09 09:56:26 977

原创 Spring SimpleAsyncTaskExecutor学习

目前了解的,Spring Kafka 的 KafkaListener 会使用 SimpleAsyncTaskExecutor,其他场景没有见使用;

2024-07-07 23:41:51 491

原创 Mybatis-01 原理

在 jdbc 编程中,我们最常用的是 PreparedStatement 式的编程,我们看下面这个例子;

2024-07-03 23:18:42 956

原创 Mybatis-03 MetaObject学习

如果我们需要给 bean 对象的属性设值,除了我们常用的构造调用方法之外,还可以用反射;下面我们举一个例子;我们既可以通过属性,也可以通过方法给 bean 对象反射设值;

2024-06-30 23:29:57 580

原创 Spring RedisLock学习

RedisLockService 示例。

2024-06-25 23:53:09 95

原创 Java 多线程-2 ReentrantLock原理

我们先以 ReentrantLock.lock() 来看简单加锁的场景;主要是 tryAcquire(arg) 和 acquireQueued(),我们重点看下这两个方法做了啥;

2024-06-25 10:07:54 317

原创 Java 多线程-2 ReentrantLock使用

ReentrantLock 是一种基于 AQS(Abstract Queued Synchronizer) 框架的应用实现,是 jdk 中一种线程并发访问的同步手段,它的功能类似于 synchronized 是一种互斥锁,可以保证线程安全;

2024-06-25 10:07:08 215

原创 Java 多线程-1

LockSupport 我们可以把它当成工具类来使用;值得一提的是,LockSupport 的 park() 不会抛出任何异常;

2024-06-23 19:13:24 715

原创 Spring ApplicationListener学习

我们自定义事件和自定义监听器,如下:@Getter@Setter@Component@OverrideSystem.out.println("邮件内容:" + event.getText());System.out.println("邮件地址:" + event.getAddress());测试事件和监听器;@Autowired@Service@Override邮件内容:zengqiang邮件地址:jx。

2024-06-22 15:25:37 832

原创 Spring @PostConstruct注解学习

PostConstruct 注解在我们日常开发中用的很多,它的执行时机是在 Bean 构造方法执行后、populate() 属性注入完成后执行的;

2024-06-20 10:52:35 277

原创 SpringBoot中的SmartInitializingSingleton学习

实现了 SmartInitializingSingleton 接口的 bean,当所有单例 bean 都已完全初始化后,该接口的 afterSingletonsInstantiated() 会被回调;SmartInitializingSingleton 和 InitializingBean、@PostContruct 有啥区别呢?

2024-06-19 23:39:52 368

原创 Mybatis-02 集成Spring后一级缓存失效

我们知道 Mybatis 的一级缓存作用域是 SqlSession,或者说是 Executor;当我们用 Spring 与 Mybatis 作集成时,会出现一级缓存 “失效” 的现象;这是为什么?我们先看下面这个例子;在这个例子中,使用 UserMapper 调了两次 selectById() 方法;观察日志会发现创建了两次 SqlSession,一级缓存肯定没有生效;

2024-06-15 21:26:29 289

原创 Spring三级缓存与循环依赖

Spring 的三级缓存、循环依赖,我们经常听到这两个词,包括面试也会被面试官问及三级缓存是啥?为啥需要三级缓存?循环依赖是啥?Spring 是如何解决循环依赖的?什么样的循环依赖 Spring 无法解决?带着上述的问题,我们深入看一下 Spring BeanFactory 的 getBean() 流程;这篇文章需要看官有一定的 Spring 源码了解;

2024-05-19 22:20:18 406 1

原创 Spring Cache原理

在看 Spring Cache 源码时,我们先看下回顾一下几个重要的注解;

2024-05-18 17:19:40 948

原创 Spring AOP-6 @Async生成AOP对象

前面我们在介绍 Spring AOP 的时候生成 proxy 代理对象都是通过 AnnotationAwareAspectJAutoProxyCreator,以及它的抽象父类 AbstractAutoProxyCreator#postProcessAfterInitialization();

2024-05-15 21:06:47 706

原创 Spring AOP-5 @Transactionl生成AOP代理对象

从前面介绍的,我们对 Spring AOP 已经有了较全面的了解,现在我们对 @Transactional 注解生成 AOP 代理对象的过程做一个解析;我们直接在 AbstractAutoProxyCreator#wrapIfNecessary() 方法中创建代理对象处打一个断点,和 Spring AOP 相关的 Advisor 是 BeanFactoryTransactionAttributeSourceAdvisor;

2024-05-12 22:56:19 568 1

原创 Spring AOP-4 @Autowired值注入的过程

其实 @Autowired 和 Spring AOP 联系不大,但是这个注解和 @Lazy 搭配时,就和 Spring AOP 有千丝万缕的联系了;由于我对 @Autowired 注解理解的不是很多,所幸一起 debug 看看它里面的流程;

2024-05-10 23:29:10 681 1

原创 Spring AOP-3 怎么生成代理类对象

我们知道代理类是在 initializeBean() 的时候的 applyBeanPostProcessorsAfterInitialization() 中触发的,通过后处理器的 postProcessAfterInitialization() 生成的;那么,真正执行 AOP 代理的是哪个后置处理器 BeanPostProcessor 呢?

2024-05-04 20:32:27 674

原创 Spring AOP-2 Advise和Advisor和Advised

在 Spring 中,经常可以看到 Advice、Advisor、Advised 等接口,它们长的很像,经常容易搞混;但是它们是完全不同的东西,有着不同的功能;理解这几个接口,能让我们更好的理解 Spring AOP,我们先简单介绍这几个接口;

2024-04-30 17:58:33 541 1

原创 Spring AOP-1 Pointcut和join point

Spring 容器中 Bean 的每一个类、方法都可以视为一个 join point,那么 join point 是如何与 Advisor 进行关联的呢?Sping 是通过 Pointcut 来将 Bean 中的 join point 与 Advisor 进行匹配的;

2024-04-30 11:33:19 384 1

原创 SpringBoot 参数处理器处理Optional和Pageable参数

在实际应用中,处理器方法的参数各式各样,遇到 Optional< Boolean > 和 Pageable 参数,SpringBoot 是如何进行解析的呢?参数 5 和参数 6 对应的参数是 Optional< Boolean > 和 Pageable 类型,下面我们进到 SpringBoot 参数解析部分看看这俩特殊参数是如何进行解析的;

2024-04-25 16:36:21 501 1

原创 Cglib动态代理

Cglib 的动态代理,就是子类继承父类。即:通过生成一个被代理对象的子类,然后重写父类的方法,所以目标类和方法不能声明为 final 类型,可以强制转化为被代理类(也就是自己写的类),即父类引用指向子类对象;

2024-04-06 23:48:43 327 1

原创 JDK的动态代理

cl = getProxyClass0(loader, intfs) 中,生成并加载 Class 对象和 Proxy 的静态内部类 ProxyClassFactory 有关,我们简单看下 ProxyClassFactory 做了啥,了解即可;1、jdk 的动态代理只有被代理对象实现了接口的情况下才能工作,因为代理对象 $Proxy0 需要继承 Proxy 类,并且代理对象会实现接口;3、代理类 $proxy0 的方法实际上执行的都是 invocationHandler.invoke();

2024-04-06 22:07:15 252

springaop学习

springaop学习

2024-03-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除