Spring静态代理与动态代理机制笔记
来源:互联网 发布:局域网qq监控软件 编辑:程序博客网 时间:2024/05/17 08:59
深度解析静态代理和动态代理机制
1: 所谓静态代理机制,就是实现一个类已经实现的接口,代理类中的方法和那个实现接口类的方法相同,这样通过调用代理类的方法,来间接的调用实现类的方法,并且可以在代理类中的方法添加所要完成的其他一些安全性的验证等业务逻辑,这种称为静态代理方式,这种方式的缺点是代理类在编译的时候已经写死,而且只能实现一种接口的代理,虽然不直接通过调用实现类的方法,但是仍然存在纵向的安全验证的调用,没有根本简化代码。
2: 所谓的动态代理机制,与静态代理相反。首先编写一个类,该类继承一个Interface(InvocationHandler)并实现Interface中的public Object invoke(Objectproxy,Method method,Object[] args)方法。在该类中编写一个方法,把要生成的动态代理类需要实现相同接口的那个类作为参数传递给这个方法,然后调用Proxy.newProxyInstance(loader,interface,h);方法,该方法返回一个动态代理类。
3: Spring为类动态生成代理的原理是当类中含有配置文件中定义的需要代理的类的方法时,Spring就为这个类生成一个代理。使用annoaction在类中注释配置是要加入一个标识函数,使用静态文件配置不需要加入此空方法。
Spring对AOP的支持,首先必须引入相关的jar包,此包放在lib/aspect/下,使用方法有两种:一种是在模块中使用注解:@Aspect@Pointcut(execution(“* add*(..)”) 在joinpoint前面加入注释@Before(“标记空函数”)。第二种是静态配置文件的使用,在配置文件当中加入如下标签<aop:aspectj-autoproxy/>表示使用动态代理机制,然后在具体配置如下
<aop:config>
<aop:aspect id=” ” ref=”aspectName”>
<aop:pointcut id=” ”expression=” ”/>
<aop:beforemethod=”” pointcut-ref=” ”/>
</aop:aspect>
</aop:config>
4: 使用CGLIB代理机制和JDK动态代理机制
两者的区别为使用JDK代理机制必须实现接口,使用CGLIB代理机制不需要实现接口。
使用CGLIB代理机制时要引入相关的jar包,此包放在spring的lib/cglib/文件夹下,如果继承了接口的在配置文件中加入标签
<aop:aspectj-autoproxy proxy-target-class=”true”/>表示使用强制CGLIB代理机制,
- Spring静态代理与动态代理机制笔记
- Spring AOP 静态代理与动态代理
- java静态代理与动态代理笔记
- Spring的静态代理与动态代理与Cglib代理
- Java学习笔记:反射与代理机制(静态、动态)
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- 静态代理,动态代理---笔记
- Spring 代理中的静态代理、动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- 静态代理与动态代理
- UITextField 开发笔记
- SpringIOC容器学习笔记
- VS控件Tabcontrol界面显示问题
- SogoTrade 美股开户指南
- 笔记——C++ primer第二章 const限定符
- Spring静态代理与动态代理机制笔记
- 近百个Android优秀开源项目,覆盖Android开发的每个领域
- V4L2框架分析学习
- 2013最后一天
- 使用php判断浏览器的类型和语言的函数代码
- Maximum FPS: Three Tips for Faster Code
- Linux系统下安装rz/sz命令及使用说明
- Spring与Struts集成笔记
- 20个超实用的JavaScript技巧及最佳实践(上)