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. python3中的负数整除、求余问题

    注:小白问题,大神们请忽略先看示例,非整除: >>> -10/3-3.3333333333333335>>> 10/-3-3.3333333333333335> ...

  2. win10 wampserver升级 php7.0至 php7.2

    1.去官网下载php7.2 下载地址: https://windows.php.net/download#php-7.0 2.下载安装 visual c++ 2017 或  visual c++ 20 ...

  3. 十大经典排序之计数排序(C++实现)

    计数排序 核心思想:计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中. 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数. 思路: 找出待排序的数组中最大和 ...

  4. Web_ServletContext主要方法

    ServletContext:联系上下文,一个项目通用一个context,作用域:整个项目 用法:Servlet里面直接应用,tomcat帮我们自动创建. 获取ServletContext:getSe ...

  5. kettle连接mysql报Communications link failure

    添加2个命名参数 1.autoReconnect=true 2.useSSL=false

  6. python,数据类型和变量,数据类型和变量,集合,字符串拼接

    可不可变: 可变:列表,字典 不可变:字符串,数字,元祖 访问顺序: 直接访问:数字 顺序访问:字符串,列表,元祖 映射:字典 存放元素个数 容器类型:列表,元祖,字典 原子:数字,字符串 集合 1. ...

  7. 静态类型和动态类型VS强类型和弱类型

    强类型语言和静态类型语言有什么区别? 静态类型的语言具有类型系统,该类型系统在实现时由实现(编译器或解释器)检查.类型检查拒绝某些程序,并且通过检查的程序通常带有一些保证.例如,编译器保证不对浮点数使 ...

  8. python pip安装三方库失败

    Collecting pip WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None ...

  9. FTP文件夹错误:【打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹】

    资源管理器访问FTP服务器报错,提示FTP文件夹错误:[打开FTP服务器上的文件夹时发生错误.请检查是否有权限访问该文件夹]. 详细信息: 200 Switching to ASCII mode. 2 ...

  10. 配置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% ...