作者:零食专卖店 | 来源:互联网 | 2023-08-22 14:02
要想明白在Java中怎么使用动态代理面向切面编程,首先你需要明白代理的含义以及为什么要使用代理java 设置代理。
代理是Java语言中的一种设计模式,俗称代理模式java 设置代理。代理模式实现可以分为静态代理和动态代理。静态代理和动态代理的区别在于动态代理中,代理类并不是在Java代码中实现,而是在运行时期生成,相比静态代理,动态代理可以很方便的对委托类的方法进行统一处理,如添加方法调用次数、添加日志功能等等。Java中代理的使用一般都是把公用或者共同的东西抽取出来,而屏蔽对象中未开放的接口和方法,即多个代码块即可以执行该重构的方法,又无需在程序中,以硬编码的方法直接调用该方法。
通俗点讲就是,假设你要租房,你肯定希望能够直接联系房东,并且能有大量房源信息,但是房东又怕麻烦,一个个来看房子,他都需要亲自带你去看房,有时候还有骚扰电话java 设置代理。这个时候就需要中介出马了,中介带你看房,跟你谈租金等等,谈好后直接和房东签合同就可以了,这个中介其实就相当于代理。如果这个中介在你要租房的时候,他就出现了,帮你把这些事都办了就属于动态代理。你租不租房,他一直都存在,就相当于中介早就存在了,就属于静态代理了。
动态代理分为jdk动态代理和cglib动态代理,区别从文件数上来说,cglib比jdk实现的少了个接口类java 设置代理。因为cglib返回的代理对象是目标对象的子类。而jdk产生的代理对象和目标对象都实现了一个公共接口。
* jdk的动态代理 * 代理对象和目标对象实现了共同的接口 * 拦截器必须实现InvocationHanlder接口 * cglib的动态代理 * 代理对象是目标对象的子类 * 拦截器必须实现MethodInterceptor接口 * hibernate中session.load采用的是cglib实现的 jdk动态代理模式里面有个拦截器的概念,在jdk中,只要实现了InvocationHandler这个接口的类就是一个拦截器类java 设置代理。还使用了些反射的相关概念。拦截器的概念不了解没关系,假如写了个请求到action,经过拦截器,然后才会到action。然后继续有之后的操作。拦截器就像一个过滤网,一层层的过滤,只要满足一定条件,才能继续向后执行。
拦截器的具体操作步骤:1.引入类:目标类和一些扩展方法相关的类java 设置代理。2.赋值:调用构造函数给相关对象赋值。3.合并逻辑处理:在invoke方法中把所有的逻辑结合在一起。最终决定目标方法是否被调用。
cglib动态代理和jdk动态代理差不多,只不过是spring框架使用而已,拦截器实现的是MethodInterceptor接口java 设置代理。
如果有说的不对的地方,请私信联系我java 设置代理。