Spring AOP.ppt


文档分类:办公文档 | 页数:约72页 举报非法文档有奖
1/72
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/72
文档列表 文档介绍
Spring AOP
AOP
在一个服务的流程中插入与业务逻辑无关的系统服务逻辑(例如 Logging 、 Security ) , 这样的逻辑称为Cross-cutting concerns,将Crossing-cutting concerns独立出来设计为一个对象,这样的特殊对象称之为Aspect,Aspect-oriented programming着重在Aspect的设计及与应用程序的织入(Weave),以上各式各样与AOP相关的名词,在这个章节中都将获得解释。
AOP跟OOP(Object-oriented programming)并不相互抵触,它们是可以相辅相成的两个设计模型,Spring AOP是实现AOP的一种技术,而spring AOP也是Spring中一些子框架或子功能所依赖的核心.
从代理机制初探 AOP
从代理机制初探 AOP
记录的这几行程序代码横切入(Cross-cutting ) HelloSpeaker类中,对于HelloSpeaker来说记录的这几个动作并不属于HelloSpeaker业务逻辑(显示”Hello “等文字),这使得HelloSpeaker增加了额外的职责。
如果需要的服务(Service)不只有记录动作,有一些非对象本身职责的相关动作也混入了对象之中(例如权限检查、事务管理等等),会使得对象的负担进一步加重,甚至混淆了对象本身该负有的职责,对象本身的职责所占的程序代码,或许还小于这些与对象职责不相关的动作或服务的程序代码。另一方面,使用以上的写法,若有一日不再需要日志记录(或权限检查、事务管理等)的服务,那么将需要修改所有留下记录动作的程序代码,您无法简单地将这些相关服务从既有的程序中移去。
静态代理

public interface IHello {
public void hello(String name);
}

public class HelloSpeaker implements IHello {
public void hello(String name) {
("Hello, " + name);
}
}
静态代理
public class HelloProxy implements IHello {
private Logger logger = (().getName());
private IHello helloObject;
public HelloProxy(IHello helloObject) {
= helloObject;
}
public void hello(String name) {
// 记录服务
log("hello method starts....");
// 执行业务逻辑
(name);
// 记录服务
log("hello method ends....");
}
private void log(String msg) {
(, msg);
}
}
静态代理
package ;
public class ProxyDemo {
public static void main(String[] args) {
HelloProxy proxy =
new HelloProxy(new HelloSpeaker());
("Justin");
}
}
静态代理
这是静态代理的基本范例,然而如您所看到的,代理对象的一个接口只服务于一种类型的对象,而且如果要代理的方法很多,势必要为每个方法进行代理,静态代理在程序规模稍大时就无法胜任,在这边介绍静态代理的目的,是在让您了解代理的基本原理。
动态代理
public class LogHandler implements InvocationHandler {
private Logger logger = (().getName());
private Object delegate;
public Object bind(Object delegate) {
= delegate;
return ( deleg

Spring AOP 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数72
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小4.67 MB
  • 时间2018-02-20
最近更新