面向切面编程(AOP模式)-创新互联

Java笔记——面向切面编程(AOP模式)

在建华等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、成都网站建设、外贸网站建设 网站设计制作按需规划网站,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站建设,外贸网站建设,建华网站建设费用合理。

原文:http://www.cnblogs.com/yanbincn/archive/2012/06/01/2530377.html

Aspect Oriented Programming  面向切面编程。解耦是程序员编码开发过程中一直追求的。AOP也是为了解耦所诞生。

具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流。

AOP 在Spring框架中被作为核心组成部分之一,的确Spring将AOP发挥到很强大的功能。最常见的就是事务控制。工作之余,对于使用的工具,不免需要了解其所以然。学习了一下,写了些程序帮助理解。

AOP 主要是利用代理模式的技术来实现的。
面向切面编程(AOP模式)

============================

1、静态代理:就是设计模式中的proxy模式 


a.业务接口
面向切面编程(AOP模式)

b.业务实现
面向切面编程(AOP模式)


c.代理对象
面向切面编程(AOP模式)

d.测试类
面向切面编程(AOP模式)

从这段代码可以看出来,代理模式其实就是AOP的雏形。 上端代码中talk(String msg, String singname)是一个切面。在代理类中的sing(singname)方法是个后置处理方法。

这样就实现了,其他的辅助方法和业务方法的解耦。业务不需要专门去调用,而是走到talk方法,顺理成章的调用sing方法

再从这段代码看:1、要实现代理方式,必须要定义接口。2、每个业务类,需要一个代理类。


============================
 
2、动态代理:jdk1.5中提供,利用反射。实现InvocationHandler接口。 


a.代理类
面向切面编程(AOP模式)

b.测试类
面向切面编程(AOP模式)

输出结果会是:

切面之前执行
people talk业务说法
切面之后执行

说明只要在业务调用方法切面之前,是可以动态的加入需要处理的方法。

从代码来看,如果再建立一个业务模块,也只需要一个代理类。ITalk iTalk = (ITalk) new DynamicProxy().bind(new PeopleTalk());  将业务接口和业务类绑定到动态代理类。

但是这种方式:还是需要定义接口。

 ============================

3、利用cglib 

a.业务类
面向切面编程(AOP模式) 


b.代理类
面向切面编程(AOP模式)


c.测试类
面向切面编程(AOP模式)

最后输出结果:

事物开始
people talk业务方法
事物结束
事物开始
spreak chinese业务方法
事物结束

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享文章:面向切面编程(AOP模式)-创新互联
文章网址:http://azwzsj.com/article/dhdpsh.html