3、AOP
2015-12-06 20:04
274 查看
3.1、静态代理
当需要为一些成熟的项目增加日志时,需要修改到原有代码,此时可以为原有的对象创建一个静态代理类,在这个代理类中实现相应的日志或者权限控制操作
使用静态代理带来的最大问题,需要为每一个类都加入相应的控制代码,这些代码其实是和业务逻辑没有关系的。
3.2、动态代理
动态代理可以将一些横切性的问题(日志管理,权限控制)提取出来成为一个模块,之后在运行的时候根据需要切入到原有正常代码中。
步骤:
1、 创建动态代理类
创建一个类实现InvocationHandler接口。以后创建对象就完全通过这个代理类来进行创建
2、在代理类创建相应的要代理的对象
3、创建一个静态的newInstance方法来创建代理对象
4、创建了代理对象之后,这个代理对象在执行任何方法时都会先执行invoke方法,就可以在这个方法中加入控制信息
5 、根据以上步骤之后,日志管理就被提取成为一个独立的模块,在运行时进行加入
6、由于使用的newInstance这个static的方法注入对象,所以无法使用Annotation需要使用xml的配置文件
7、此时可以考虑为相应的方法增加Annotation来增强相应的操作
3.3、使用Spring实现 AOP
Spring就是使用动态代理来实现AOP的
Annotation
1、使用Annotation实现
1.1、在xml中打开aop的自动检索
1.2、创建一个需要实现动态代理的类
1.3、导入aspect包,spring使用的是AspectJ这个包来实现AOP,所以需要导入这个包
1.4、在这个类上面使用@Aspect来声明这个类是一个切面类
1.5、在相应的要进行操作横切点上面加入PointCut的说明
1.6、如果希望获取相应的调用信息,可以通过JoinPoint这个参数进行传递
1.7、其他知识
xml
使用annotation需要在大量的joinpoint上加入execution,感觉不是很方便,使用xml会相对简单一些
当需要为一些成熟的项目增加日志时,需要修改到原有代码,此时可以为原有的对象创建一个静态代理类,在这个代理类中实现相应的日志或者权限控制操作
使用静态代理带来的最大问题,需要为每一个类都加入相应的控制代码,这些代码其实是和业务逻辑没有关系的。
3.2、动态代理
动态代理可以将一些横切性的问题(日志管理,权限控制)提取出来成为一个模块,之后在运行的时候根据需要切入到原有正常代码中。
步骤:
1、 创建动态代理类
创建一个类实现InvocationHandler接口。以后创建对象就完全通过这个代理类来进行创建
2、在代理类创建相应的要代理的对象
3、创建一个静态的newInstance方法来创建代理对象
4、创建了代理对象之后,这个代理对象在执行任何方法时都会先执行invoke方法,就可以在这个方法中加入控制信息
5 、根据以上步骤之后,日志管理就被提取成为一个独立的模块,在运行时进行加入
6、由于使用的newInstance这个static的方法注入对象,所以无法使用Annotation需要使用xml的配置文件
7、此时可以考虑为相应的方法增加Annotation来增强相应的操作
3.3、使用Spring实现 AOP
Spring就是使用动态代理来实现AOP的
Annotation
1、使用Annotation实现
1.1、在xml中打开aop的自动检索
1.2、创建一个需要实现动态代理的类
1.3、导入aspect包,spring使用的是AspectJ这个包来实现AOP,所以需要导入这个包
1.4、在这个类上面使用@Aspect来声明这个类是一个切面类
1.5、在相应的要进行操作横切点上面加入PointCut的说明
1.6、如果希望获取相应的调用信息,可以通过JoinPoint这个参数进行传递
1.7、其他知识
xml
使用annotation需要在大量的joinpoint上加入execution,感觉不是很方便,使用xml会相对简单一些
相关文章推荐
- 20151206 Linux系统日常管理 (第一部分 top ,vmstat,ps,ptree,sar)
- Apache 配置PHP出现The requested operation has failed
- linux常用命令
- Execution default-testResources of goal org.apache.maven.plugins:maven-resources-plugin:2.5:testReso
- OpenGL超级宝典学习笔记——变换
- shell脚本启动storm 集群
- Shell编程
- VS2010+OpenCV2.4.3配置(一次设置,永久生效)
- linux 文件权限
- CentOS 下FTP安装及配置
- Clothes 网站
- Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置
- linux上安装mono发布.net网站步骤
- linux内核参数注释与优化 【转】
- Linux学习笔记(1)-嵌入式Linux概念
- linux目录结构详细介绍 【转】
- Linux运维 第五阶段(五)drbd
- opencv 保存视频VideoWrite
- Linux虚拟内存与交换空间机制
- CentOS编译PHP的错误信息处理