aop思想
原来我们java编程是抽离出来,之后哪个需要这个增强类需要类中引用
aop思想:通过配置来实现,所有类要用到的同一个类会在配置中去实现,在java运行的过程中使用
aop实现
- 通过JDK的方法来实现:动态代理但是实现方式必须是接口实现,
Target target =new Target()
TargetInterface proxy=(TargetInterface)Proxy.newProxyInstance(
target.getClass().getClassLoader(), //目标类加载器
target.getClass().getInterfaces(), //目标对象相同的接口字节数组
new InvocationHandler(){
public Object invoke(Object proxy,Method method,Object[] args)throws Throwble{
... // 这里可以先实现之前的方法
method.invoke(target ,args) //实现目标对象
... // 这里可以先实现之后的方法
return null;
}
}
) //Jdk代理实现
- 通过第三方cglib方法实现:父类
// cglib方法
Target target =new Target();
// 实现增强器
Enhancer enhancer=new Enhancer();
//设置父类(目标)
enhancer.setSuperclass(Target.class);
// 设置回调
enhander.setCallback(new MethodInterceptor){
public Object intercept(Object proxy,Method method,Object[] args,MethodProxy methodProxy)throws Throwble{
... // 这里可以先实现之前的方法
Object invoke= method.invoke(target ,args) //实现目标对象
... // 这里可以先实现之后的方法
return invoke;
}
}
Target target=(Target)enhander.create()
//



