直接上代码,HelloWorld接口和HelloWorldImpl1实现
public interface HelloWorld
{
void printHelloWorld();
void doPrint(String msg);
}
public class HelloWorldImpl1 implements HelloWorld
{
public void printHelloWorld()
{
doPrint("Enter HelloWorldImpl1.printHelloWorld()");
}
public void doPrint(String msg)
{
System.out.println(msg);
}
}
使用CGLIB生成一个动态代理
public class DynamicProx implements MethodInterceptor
{
private static DynamicProx INSTANCE = new DynamicProx();
private DynamicProx()
{
}
public static DynamicProx getInstance()
{
return INSTANCE;
}
public <T extends HelloWorld> T getProxy(Class<T> cls)
{
return (T)Enhancer.create(cls, this);
}
@Override
public Object intercept(Object paramObject, Method paramMethod, Object[] paramArrayOfObject,
MethodProxy paramMethodProxy) throws Throwable
{
if ("equals".equals(paramMethod.getName()))
{
return this.equals(paramArrayOfObject[0]);
}
else if ("hashCode".equals(paramMethod.getName()))
{
return this.hashCode();
}
else if ("toString".equals(paramMethod.getName()))
{
return this.toString();
}
else
{
System.out.println("DynamicProx Log before method");
paramMethodProxy.invokeSuper(paramObject, paramArrayOfObject);
System.out.println("DynamicProx Log after method");
}
return null;
}
使用xml配置添加一个aop代理