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. vue npm安装指令汇总

    1.elmentui:npm i element-ui -S 2.打印插件:npm install vue-print-nb --save 3.时间转换插件Moment:npm install mom ...

  2. seleniumUI自动化学习记录

    2019.2.9 尝试了一个启动浏览器并打开指定网址的程序: 这里首先要注意的就是浏览器的版本和selenium jar包的版本必须符合才行,不然会报错 2019.9.16 必须要下载相应的chrom ...

  3. percona mongo热备

    https://www.percona.com/doc/percona-server-for-mongodb/LATEST/hot-backup.html#hot-backup Hot Backup ...

  4. Idea项目构建时解决方法

    java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: GC overhead limit exceeded 整 ...

  5. Lombok和MapStruct冲突

    Lombok和MapStruct冲突导致无法生成正确的class文件. lombok自动生成getset等冗余代码. MapStruct对象copy.传统的BeanUtils.copy等利用的反射原理 ...

  6. Blob文件下载type类型

    let url = window.URL.createObjectURL(new Blob([文件流(一般为res.data)], {type: "Blob类型"}) let li ...

  7. Codeforces Round #809 (Div. 2) A-E

    Codeforces Round #809 (Div. 2) 2022/7/19 下午VP 传送门:https://codeforces.com/contest/1706 A. Another Str ...

  8. Rancher 通过主机标签进行调度

    https://blog.csdn.net/qq12547345/article/details/121486709

  9. uni-app使用Sqlite

    step2:封装常用操作(未对事务进行封装 HTML5+ API Reference (html5plus.org)) // //打开数据库 function openDb(name,path) { ...

  10. js实现切换页面清除定时器的函数

    背景: 我在切换页面的时候,发现切换回原来的页面,定时器会叠加而不会清除原来的定时器 解决方法: 1.定义全局变量,通过js遍历清除(不会用,但性能好) var pageTimer = {} ; // ...