AOP代理模式可以实现事务控制和业务逻辑代码横切。

使用代理模式,动态代理实现横切。

什么是代理?

接口就是指定要做的事情,要实现的逻辑。

代理类似于房源租房

public interface ZuFang{

//我需要一个一室一厅的房子
public void rentHouse( );
}
//比如租房,就是接口。 //你需要租房就要实现租房接口,自己实现再nev一个自己去租房。 public class ZuFangImpl implements ZuFang{ @Override Dublic void rentHouse() { System.out.println("我要租个室一厅的房子");

介,他帮你租房,他的目标也是实现接口租到房子,它可以帮你租房做点事情,收点服务费,之后也可以做点事情,这就是方法增强。(poxy)

public class ZuFangZJ implements ZuFang{

//接口

private ZuFang zufang;

public ZuFangZJ (ZuFang zufang){this. zufang = zufang;}

@Override
public void rentHouse() { System.out.println("我是中介,我要收雇租客代理费"); zufang.rentHouse(); System.out.println("我是中介,我要收雇房东代理费" );
}
} 测试实现: public static void main(String[] args) { ZuFang renter = new ZuFangImpl(); //把自己信息给他他去找
ZuFangZJ zhongjie =new ZuFangZJ(renter);
zhongjie. rentHouse();
}
}

这就是静态代理每一种业务都需要一 一个实现类去完成实现类去。每个不用代理,要不同

动态代理:

1.jdk动态代理

public class ProxyFactory

//代理工厂实现代理对象

private ProxyFactory(){};

private static ProxyFactory proxyFactory;
public static ProxyFactory getInStance( ){
if(proxyFactory = null){
proxyFactory = new ProxyFactory();
}
return proxyFactory;
}
public Object getJDKProxyInstance( Object o)(return Proxy . newProxyInstance(o getClass( ). getClassLoader(),o. getClass().getInterfaces(),new InvocationHandler(){
//Method就是调用的的方法
public 0bject invoke(0bject arg0, Method arg1, Object[] arg2)throws Throwable (
Object result = null;
//逻辑增强
Systen.out.printIn("我是租房公司,我要收雇租客代理费");
result = argl.invoke(o, arg2);
System.out.println(”我是租房公司,我要收雇房东代理费");
return result;
}
})
}

2.cglib

第一个数据是委托类型class,第二个参数是方法拦截,实现那他的内部类就可以实现方法增强和jdk代理-样。

所有代理模式进行代理返回的都是代理模式的代理类,

都可以对原有的方法再代理中实现代理增强,也就是aop思想的实现

有关Spring的ioc理解之代理模式的更多相关文章

  1. Spring的IOC理解(转载)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  2. Spring中常见的设计模式——代理模式

    一.代理模式的应用场景 生活中的中介,黄牛,等一系列帮助甲方做事的行为,都是代理模式的体现.代理模式(Proxy Pattern)是指为题对象提供一种代理,以控制对这个对象的访问.代理对象在客户端和目 ...

  3. 用实例理解设计模式——代理模式(Python版)

    代理模式:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式分为: 静态代理 动态代 ...

  4. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  5. Spring配置类理解(Lite模式和Full模式)

    Spring中的注解大家在开发中都常常用到,但是如果我说我们常常用的注解修饰了一个类,表示这个类就是一个配置类很多开发者都会有点迷糊了.具体配置类在开发中有什么样的用途我就不多说了,相信很多人都知道, ...

  6. spring(IOC)动态代理

    姓名:黄于霞      班级:软件151 1.引入Spring IOC的核心jar包,创建IOC的配置文件beans.xml,内容如下: 1 <?xml version="1.0&qu ...

  7. Spring的Ioc理解

    1.Ioc=控制反转和依赖注入(DI),两个是一回事 控制反转的好处: 把对象的创建和依赖定义在xml中,改变子类的实现变得很简单 控制反转减轻了对象之间的耦合度,减轻了对象之间的依赖关系,增加了系统 ...

  8. 理解java的三种代理模式

    代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class ...

  9. 浅析对spring中IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  10. Spring增强代理模式

    1. 依赖注入;(掌握) 2. XML自动注入;(掌握) 3. 全注解配置;(掌握) 4. 代理模式;(掌握,难点) 依赖注入 构造参数注入 constructor-arg:构造器注入: index: ...

随机推荐

  1. CF527D 题解

    题意:数轴上有 \(n\) 个点,第 \(i\) 个点的坐标为 \(x_i\),权值为 \(w_i\).两个点 \(i,j\) 之间存在一条边当且仅当 \(abs(x_i-x_j)\geq w_i+w ...

  2. mybatis的sql操作

    1.Mapper接口创建 创建Mapper包,所有的Mapper接口放在该包下.Mapper接口中声明将要实现的方法,在接下来的Mapper.xml文件中实现对应方法. 2.Mapper.xml创建 ...

  3. java调用c++的几种方式

    jni 类似c#调用c++的方式,定义java端的c++代码接口. package crayon.jni; public class JNITest { public native static vo ...

  4. oracle导入dmp

    通过impdp导入 1.sqlplus       (连接oracle数据库) 2.输入用户名密码3.create user abc identified by 123456;   (创建用户名为ab ...

  5. shell编程【一】

    参考网址:[Linux命令大全][]:https://linux265.com/course/linux-commands.html 为什么要学习shell指令? 学习shell指令的本身也是在了解L ...

  6. MATLAB画图自动确定坐标范围(GUI)

    今天在用MATLAB做我的毕设的时候碰到一个很纠结的问题,之所以说纠结是因为我觉得这个问题很简单,可是一时半会就是弄不出来(ー`´ー).鼓捣了半个小时左右吧,终于搞出来了.下面做个纪念: 问题描述 在 ...

  7. ffmpeg均匀分割视频命令

    ffmpeg -y -i input.wav -f segment -segment_time 5 output-%d.wav -segment_time 分割视频片段大小 -segmenet_lis ...

  8. JDMasking v0.1.0-beta 发布

    JDMasking 全称是jdbc data masking,是一款零代码修改.无重启.基于JDBC的动态数据脱敏软件. JDMasking 主要对实现jdbc的驱动进行字节码的增强,支持对运行中的程 ...

  9. 配置tlpi_hdr.h 头文件《linux系统编程》(转载)

    https://www.cnblogs.com/pluse/p/6296992.html#:~:text=tlpi_hdr.h%E6%96%87%E4%BB%B6%E5%88%99%E5%8C%85% ...

  10. Qt非主线程显示窗口的简易思路

    首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 Qt 在非主线程是无法显示UI窗口的,如果我们在其它线程中处理完数据,需要使用窗口展示,或者在其它线程需要使用到 ...