- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Spring AOP 4 java3 Arranged By Knowno
面向切(方)面编程
AOP概念
AOP:Aspect Oriented Programming(面向切面编程或面向方面编程),是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP)。
AOP为开发者提供一种进行横切关注点(比如日志关注点横切了支付关注点)分离并织入的机制,把横切关注点分离,然后通过某种技术织入到系统中,从而无耦合的完成了我们的功能。
面向切面的编程和面向对象并不矛盾,是对面向对象的思维方式的有效补充。主要将程序中涉及公共问题集中解决,可以解决面向对象和过程化方法中不能很好解决的横切问题如:事务,安全,日志,异常处理等横切关注。
利用动态代理实现面向切面编程
代理:
代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。
代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。
关于静态代理和动态代理: 静态代理类: 由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。
华哥想追求隔壁的班花,自己又不认识,所以请一个代理(小明)帮忙:设计代码如下:
/**
* 定义一个班花
* @author Administrator
*
*/
public class ClassFlower {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public ClassFlower(String name) {
= name;
}
}
定义追求班花的方法:
/**
* 定义的接口
*
* @author Administrator
*
*/
public interface IGiveSomething {
void giveMoney();
// void giveCar();
void giveSeaHouse();
}
实现接口的方法:
/**
* SuperMan 符合大家口味 追求者
*
* @author Administrator
*
*/
public class SuperMan implements IGiveSomething {
private ClassFlower cf;
public ClassFlower getCf() {
return cf;
}
public void setCf(ClassFlower cf) {
this.cf = cf;
}
public SuperMan(ClassFlower cf) {
this.cf = cf;
}
@Override
public void giveSeaHouse() {
System.out.println(华哥 送给女生 + cf.getName() + 一栋海景房~~~);
}
@Override
public void giveMoney() {
System.out.println(华哥 送给女生 + cf.getName() + 100亿~~~);
}
}
代理类的具体实现:
public class Proxy implements IGiveSomething {
private SuperMan superman;
public SuperMan getSuperman() {
return superman;
}
public void setSuperman(SuperMan superman) {
this.superman = superman;
}
// 我们做华哥的代理
public Proxy(SuperMan sm) {
this.superman = sm;
}
@Override
public void gi
您可能关注的文档
- 加油站储罐基础土方开挖施工方案答题.doc
- 2014年注册会计师全国统一考试《公司战略与风险管理》科目及(第1套)技术总结.doc
- 2014年注册会计师全国统一考试《公司战略与风险管理》科目及(第2套)技术总结.doc
- CKSG-4.8-0.48-12串联电抗器Reactor答题.doc
- 《冰与火之歌》扫盲帖答题.docx
- 2014年注会考试练习题(销售与收款循环审计)技术总结.doc
- 2014年淄博市教师继续教育满分作业技术总结.doc
- 2014前装车载交互系统现状及趋势简报技术总结.doc
- 2014青岛版新版三上第八单元:绿色生态园-解决问题技术总结.doc
- 2014人音版二年级下册音乐电子技术总结.doc
最近下载
- TPS1200(徕卡TCR1202操作说明书中文版).pdf
- 《GB 12319-2022中国海图图式》(2025版)深度解析.pptx
- 求“陈”字所有书法字体图片。.pdf VIP
- 质控图与质控规则.pptx VIP
- 2025年时事政治必考题库(历年真题)附答案详解.docx VIP
- 《建设项目水资源论证导则第9部分:纺织行业建设项目SLT 525.9-2024》知识培训.pptx VIP
- 2018年中国出版集团招聘考试题(非编辑类B卷)和参考答案.pdf VIP
- 高性能算力中心建设项目投资计划书.docx
- 成人高考专升本2025年考试《政治》真题试卷(含答案).docx VIP
- 钢筋相关保护层厚度不合格处理方案.pdf VIP
文档评论(0)