java 代理的概念与作用
1、引入:
为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做?
编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码。
2、代理类的优点:
如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置是使用目标类、还是代理类,这样以后很容易切换,譬如,想要日志功能时就配置代理类,否则配置目标类,这样,增加系统功能很容易,以后运行一段时间后,又想去掉系统功能也很容易。
目标类: 代理类:
class X{ Xproxy{
void sayHello(){ void sayHello(){
syso:Hello; startTime
} X. sayHello();
} endTime;}}
一般用接口来引用其子类,如:Collectioncoll = new ArrayList();
AOP
系统中存在交叉业务,一个交叉业务就是要切入到系统中的一个方面,如下所示:
安全 事务 日志
StudentService ------|----------|------------|-------------
CourseService ------|----------|------------|-------------
MiscService ------|----------|------------|-------------
用具体的程序代码描述交叉业务:
method1 method2 method3
{ { {
------------------------------------------------------切面
.... .... ......
------------------------------------------------------切面
} } }
交叉业务的编程问题即为面向方面的编程(Aspect oriented program ,简称AOP),AOP的目标就是要使交叉业务模块化。可以采用将切面代码移动到原始方法的周围,这与直接在方法中编写切面代码的运行效果是一样的,如下所示:
------------------------------------------------------切面
func1 func2 func3
{ { {
.... .... ......
} } }
------------------------------------------------------切面
使用代理技术正好可以解决这种问题,代理是实现AOP功能的核心和关键技术。
安全,事务,日志等功能要贯穿到好多个模块中,所以,它们就是交叉业务
重要原则:不要把供货商暴露给你的客户
相关文章
- java集合(3)- Java中的equals和hashCode方法详解
- java安全编码指南之:异常处理
- Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOCX 转换为 Markdown
- Java 线程池初识
- Java并发JUC(java.util.concurrent)JMM内存模型
- 详解Java中ThreadLocal类型
- Java - CentOS下JDK的安装教程(及JAVA_HOME配置、以jdk1.8为例)
- 1. java.util.concurrent - Java 并发工具包
- java设计模式之——代理模式
- java整理软件--- Java OCR 图像智能字符识别技术,可识别中文,但是验证码不可以识别...已测识别中文效果很好
- alue of type java.lang.String cannot be converted to JSONObject
- 阿里Java开发规约笔记
- Java反射基础知识笔记:反射的定义、class类的本质、class类的动态加载、class类的实例如何访问字段/方法/构造方法/继承关系、动态代理的本质
- Java魔法堂:以Windows服务的形式运行Java程序
- java中通过反射获取方法并且调用(getMethod和invoke深入)实践
- java学习路线-Java技术人员之路从0基础到高级
- Java web项目用cookie记住用户名、密码
- Java算法--串的简单处理
- JAVA如何设置代理server,s取消代理erver
- Java开发 - Quartz初体验
- 【Java】JDK动态代理
- java+内存分配及变量存储位置的区别
- 操作系统常用命令及使用java调用
- 【Java笔记】配置文件java.util.Properties类的使用
- java项目异常监控_JAVA项目中的常用的异常处理情况总结