随笔分类 - Spring
Spring 高级 切点匹配
摘要:一、execution 和 annotation 两种方式设置切点匹配 package com.mangoubiubiu.show.a16; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.sp
Spring 高级 Spring选择代理 jdk 和 cglib的统一 aspect 和 advisor的区别
摘要:一 aspect 和 advisor的区别 https://blog.csdn.net/qq_44750696/article/details/101638722 二 advisor 演示 Spring 选择代理 package com.mangoubiubiu.show.a15; import o
Spring 高级 cglib代理原理 MethodProxy 总结
摘要:总结 当调用 MethodProxy 的 invoke 或 invokeSuper 方法时, 会动态生成两个类 ProxyFastClass 配合代理对象一起使用, 避免反射 TargetFastClass 配合目标对象一起使用, 避免反射 (Spring 用的这种) TargetFastClass
Spring 高级 cglib代理原理 MethodProxy
摘要:一、模拟cglib代理 package com.mangoubiubiu.show.a14; public class Target { public void save(){ System.out.println("save()"); } public void save(int i){ Syst
Spring 高级 cglib代理原理
摘要:一、模拟cglib代理 package com.mangoubiubiu.show.a14; import org.springframework.cglib.proxy.MethodInterceptor; import java.lang.reflect.Method; import java.
Spring 高级 jdk反射优化
摘要:一、代码 package com.mangoubiubiu.show.asm; import java.lang.reflect.Field; import java.lang.reflect.Method; // 运行时请添加 --add-opens java.base/java.lang.ref
Spring 高级 jdk代理原理-字节码篇
摘要:一、利用ASM插件生成 asm生成代理类的字节码代码 1、写好代理类 package com.mangoubiubiu.show.asm; import org.springframework.cglib.proxy.UndeclaredThrowableException; import java
Spring 高级 jdk代理原理-源码篇
摘要:一、利用Arthas工具 反编译出源码 发现和我们自己写的模拟jdk代理差不多 /* * Decompiled with CFR. * * Could not load the following classes: * com.mangoubiubiu.show.a12.JdkProxyDemo$F
Spring 高级 jdk代理原理-进阶篇
摘要:一、获取目标方法的返回 package com.mangoubiubiu.show.a13; import java.lang.reflect.Method; public class A13 { interface Foo{ void foo() ; int bar() ; } interface
Spring 高级 jdk代理原理-基础篇
摘要:一、简单代理 package com.mangoubiubiu.show.a13; public class A13 { interface Foo{ void foo(); } static class Target implements Foo{ @Override public void fo
Spring 高级 AOP 实现之proxy增强-cglib
摘要:一、代码 package com.mangoubiubiu.show.a12; import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; pub
Spring 高级 AOP 实现之 proxy增强-jdk
摘要:一、代码 package com.mangoubiubiu.show.a12; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; p
Spring 高级 AOP 实现之 agent 增强
摘要:一、代码 package com.itheima.aop; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.slf4j.Logger; import or
Spring 高级 AOP 实现之 ajc 编译器
摘要:一、代码 package com.itheima.aop; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.slf4j.Logger; import or
Spring 高级 Scope失效解决
摘要:一、面试问题 1、如果一个单例Bean里面 注入多例 通过单例Bean对象获取到的多例Bean是单例还是多例 二、 失效演示 1、代码 package com.mangoubiubiu.show.a09; import org.springframework.beans.factory.annota
Spring 高级 Scope
摘要:介绍 1、在当前版本的 Spring 和 Spring Boot 程序中,支持五种 Scope singleton,容器启动时创建(未设置延迟),容器关闭时销毁 prototype,每次使用时创建,不会自动销毁,需要调用 DefaultListableBeanFactory.destroyBean(
Spring 高级 初始化与销毁
摘要:一 初始化 1、简介 Spring 提供了多种初始化手段,除了 @PostConstruct,@Bean(initMethod) 之外,还可以实现 InitializingBean 接口来进行初始化,如果同一个 bean 用了以上手段声明了 3 个初始化方法,那么它们的执行顺序是 @PostCons
Spring 高级 @Autowired 失效分析
摘要:一、失效演示 1、正常情况 package com.mangoubiubiu.show.a06; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; impo
Spring 高级 Aware 接口及 InitializingBean 接口
摘要:一、Aware 1、Aware 接口的作用 Aware 接口提供了一种【内置】 的注入手段,例如 BeanNameAware 注入 bean 的名字 BeanFactoryAware 注入 BeanFactory 容器 ApplicationContextAware 注入 ApplicationCo
Spring 高级 工厂后处理器模拟实现-Mapper
摘要:一、源方式自动注入 package com.mangoubiubiu.show.a05; import com.alibaba.druid.pool.DruidDataSource; import com.mangoubiubiu.show.a05.component.Bean2; import c