其spring是动态代理的。这里只是说一下代理的基本思想。
我认为就是加和中间类,这个类里面建了一个其他类得对象。调用这个对象的方法。从而实现其他类得功能,好处是容易扩展。
AOP是代理模式的一种实现,你把代理模式理解了就不难了。
代理模式是一种针对业务逻辑复合处理的一种强大的设计模式。
生活中常常有这样的例子,比如你去拜访一位朋友,但是他却不在家,这时你会让他的家人通知他。但是这个通知的过程你并不清楚。如果你有礼貌,也许家人会夸奖你,如果你态度恶劣,说不定也会打你小报告。你所关注的只是通知朋友的事件,但此过程中间可能会发生其他的事情。
放在程序中来说,进行一段业务处理的时候,会遇到额外要增加的业务逻辑,这段逻辑是已经封装好的。而本身的业务逻辑也是封装好的,两个模块间并不发生任何关系。这个时候就要用到代理模式了,下面简单提供一段示例代码阐述代理模式的基本思想。
public class ProxyObject implements Object {
Object obj;
public ProxyObject() {
System.out.println("这是代理类");
obj = new ObjectImpl();
}
public void action() {
System.out.println("代理开始");
obj.action();
System.out.println("代理结束");
}
}
public interface Object {
void action();
}
public class ObjectImpl implements Object {
public void action() {
System.out.println("========");
System.out.println("========");
System.out.println("这是被代理的类");
System.out.println("========");
System.out.println("========");
}
}
public class Test {
public static void main() {
Object obj = new ProxyObject();
obj.action();
}
}
代理模式是一种间接调用的体现,上面示例代码中。如果直接调用Object实现类,也就是ObjectImpl中的方法,并不能调用新的业务逻辑,而如果实现一个代理类,在类中调用ObjectImpl,这样外部访问代理类时会间接调用ObjectImpl,并且此过程可以扩展而不用对源代码ObjectImpl进行修改。
spring 中的AOP就是基于这种原理。AOP中会发生多个逻辑复合处理的情况,使用代理类能准确执行目标类中定义的逻辑单元并且扩展其他的逻辑单元。
我认为就是加和中间类,这个类里面建了一个其他类得对象。调用这个对象的方法。从而实现其他类得功能,好处是容易扩展。
AOP是代理模式的一种实现,你把代理模式理解了就不难了。
代理模式是一种针对业务逻辑复合处理的一种强大的设计模式。
生活中常常有这样的例子,比如你去拜访一位朋友,但是他却不在家,这时你会让他的家人通知他。但是这个通知的过程你并不清楚。如果你有礼貌,也许家人会夸奖你,如果你态度恶劣,说不定也会打你小报告。你所关注的只是通知朋友的事件,但此过程中间可能会发生其他的事情。
放在程序中来说,进行一段业务处理的时候,会遇到额外要增加的业务逻辑,这段逻辑是已经封装好的。而本身的业务逻辑也是封装好的,两个模块间并不发生任何关系。这个时候就要用到代理模式了,下面简单提供一段示例代码阐述代理模式的基本思想。
public class ProxyObject implements Object {
Object obj;
public ProxyObject() {
System.out.println("这是代理类");
obj = new ObjectImpl();
}
public void action() {
System.out.println("代理开始");
obj.action();
System.out.println("代理结束");
}
}
public interface Object {
void action();
}
public class ObjectImpl implements Object {
public void action() {
System.out.println("========");
System.out.println("========");
System.out.println("这是被代理的类");
System.out.println("========");
System.out.println("========");
}
}
public class Test {
public static void main() {
Object obj = new ProxyObject();
obj.action();
}
}
代理模式是一种间接调用的体现,上面示例代码中。如果直接调用Object实现类,也就是ObjectImpl中的方法,并不能调用新的业务逻辑,而如果实现一个代理类,在类中调用ObjectImpl,这样外部访问代理类时会间接调用ObjectImpl,并且此过程可以扩展而不用对源代码ObjectImpl进行修改。
spring 中的AOP就是基于这种原理。AOP中会发生多个逻辑复合处理的情况,使用代理类能准确执行目标类中定义的逻辑单元并且扩展其他的逻辑单元。