From ae6cc2ef172d647588940a22e59cb93aeed21bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Wed, 4 Mar 2020 10:35:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=A8=A1=E5=BC=8F=E6=BA=90?= =?UTF-8?q?=E7=A0=81=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++++++ .../proxy/dynamic/OrderServiceDynamicProxy.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/pom.xml b/pom.xml index bdce534..c9a8226 100644 --- a/pom.xml +++ b/pom.xml @@ -105,6 +105,12 @@ ${org.springframework.version} + + org.springframework + spring-aop + ${org.springframework.version} + + org.springframework spring-tx diff --git a/src/main/java/top/fjy8018/designpattern/pattern/structural/proxy/dynamic/OrderServiceDynamicProxy.java b/src/main/java/top/fjy8018/designpattern/pattern/structural/proxy/dynamic/OrderServiceDynamicProxy.java index 31a65a3..2047476 100644 --- a/src/main/java/top/fjy8018/designpattern/pattern/structural/proxy/dynamic/OrderServiceDynamicProxy.java +++ b/src/main/java/top/fjy8018/designpattern/pattern/structural/proxy/dynamic/OrderServiceDynamicProxy.java @@ -1,6 +1,8 @@ package top.fjy8018.designpattern.pattern.structural.proxy.dynamic; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.binding.MapperProxy; +import org.springframework.aop.framework.ProxyFactoryBean; import top.fjy8018.designpattern.pattern.structural.proxy.Order; import top.fjy8018.designpattern.pattern.structural.proxy.db.DataSourceContextHolder; @@ -11,6 +13,13 @@ import java.lang.reflect.Proxy; /** * 动态代理实现分库 * 动态代理适用场景更加广泛,可以实现通用分库逻辑 + *

+ * {@link ProxyFactoryBean#getObject()} 代理工厂类 + * {@link org.springframework.aop.framework.JdkDynamicAopProxy} spring AOP实现,对动态代理封装 + * {@link org.springframework.aop.framework.CglibAopProxy} Cglib 对类进行代理增强 + * {@link org.apache.ibatis.binding.MapperProxyFactory#newInstance(MapperProxy)} 实现mapper代理 + * 实际封装在 {@link MapperProxy#invoke(Object, Method, Object[])} + * 其获取的方法利用了享元模式 {@link MapperProxy#cachedMapperMethod(Method)} * * @author F嘉阳 * @date 2020/3/3 11:00