AOP一直感觉很神秘,记得第一看到这个名词,这个是什么东东呀。
文字不写了,直接代码
IBusiness接口类
package com.aop.proxy;
public interface IBusiness {
public void process();
public void process1();
}
Business实现类
package com.aop.proxy;
public class BusinessImpl implements IBusiness {
public void process() {
System.out.println("执行业务");
}
public void process1() {
System.out.println("执行业务1");
}
}
拦截器LogIntercptor 类
package com.aop.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class LogInterceptor implements InvocationHandler {
private Object delegate;
public LogInterceptor(Object delegate){
this.delegate=delegate;
}
public Object invoke(Object obj, Method method, Object[] arg2)
throws Throwable {
Object result=null;
try{
System.out.println("Before process:"+method);
//在这里,可以实现对方法访问权限的简单控制
if(method.getName().equals("process1")){
result=method.invoke(delegate, arg2);
}
System.out.println("After process:"+method);
}
catch(Exception e){
System.out.println("发生异常");
}
return result;
}
}
测试用例
package com.aop.proxy;
import junit.framework.TestCase;
import java.lang.reflect.*;
public class TestAOP extends TestCase {
public void testAOP(){
IBusiness obj=new BusinessImpl();
LogInterceptor interceptor=new LogInterceptor(obj);
IBusiness proxy=(IBusiness)Proxy.newProxyInstance(BusinessImpl.class.getClassLoader(),
BusinessImpl.class.getInterfaces(),
interceptor);
proxy.process();
proxy.process1();
}
}
运行 结果:
Before process:public abstract void com.aop.proxy.IBusiness.process()
After process:public abstract void com.aop.proxy.IBusiness.process()
Before process:public abstract void com.aop.proxy.IBusiness.process1()
执行业务1
After process:public abstract void com.aop.proxy.IBusiness.process1()
分享到:
相关推荐
Java动态代理实现AOP Java动态代理是实现Aspect Oriented Programming(AOP)的重要手段。在Java中,动态代理可以通过java.lang.reflect InvocationHandler接口和java.lang.reflect.Proxy类来实现。AOP的主要思想...
### Java动态代理实现AOP详解 #### 一、引言 随着软件开发复杂度的提升,传统的面向对象编程(OOP)已经难以满足现代软件工程的需求。为了更好地管理跨切面的关注点,如日志记录、性能监控、安全控制等,面向切面...
值得注意的是,虽然这个例子展示了如何手动使用Java动态代理实现AOP,但在实际项目中,通常会使用像Spring这样的框架,它们提供了更高级的AOP功能,包括切点表达式、通知类型、织入策略等,使得AOP的使用更加便捷和...
Java 动态代理是实现AOP(面向切面编程)的一种高效途径,它允许开发者在不修改原有业务逻辑代码的情况下,插入额外的功能,如日志记录、性能监控、权限控制等。AOP的核心思想是将关注点分离,使得业务代码与横切...
下面是一个简单的Java动态代理实现AOP的例子,模拟日志记录功能: ```java public interface MyInterface { void doSomething(); } public class MyTarget implements MyInterface { @Override public void ...
以下是一个简单的例子,展示了如何使用Java动态代理实现AOP: ```java import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; interface MyInterface {...
本项目旨在通过Java的动态代理技术实现面向切面编程(AOP),涵盖了静态代理、JDK动态代理、CGLIB动态代理、AspectJ以及基于instrumentation的动态代理等多种实现方式。通过这些实现方式,可以在不修改原有代码的...
总之,Java动态代理和AOP提供了强大的工具,使我们能够优雅地实现代码解耦,提高代码的复用性和可维护性。通过代理对象,我们可以在不修改原始类代码的情况下,添加额外的功能或改变原有行为,这对于系统的服务层和...
- `设计模式:用Java动态代理实现AOP.docx`可能包含了如何使用Java动态代理来实现设计模式,尤其是代理模式,以达到AOP的效果。 - `Spring AOP入门实例详解.docx`可能涵盖了Spring AOP的基本概念、配置以及如何...