ORmapping 4
来源:互联网 发布:网络综艺运营模式 编辑:程序博客网 时间:2024/05/07 09:07
框架在开发完成之时,还并没有涉及到面向方面之类的一些东西,虽然框架能够满足
大部分的应用需要,但我们不得不在实际的开发过程中面临很尴尬的问题,在一些纯粹的
业务代码里面要加入很多不相关的代码,而这些代码本和业务逻辑和数据库操作没有任何关系
比如:最简单的就是日志,复杂一点的 事务处理 , 权限控制等等
这些讨厌的代码无孔不入的在你的任何的方法头或者尾上出现
public void Business_Flow()
{
}
上述的代码几乎每个项目中都会出现,开发人员能对Logging方法进行很好的封装,但依然不能避免
在业务逻辑代码中出现它们的身影。
而关注横切面思想编程模型,AOP即可以很好的解决这个问题
我没有写AOP的核心代码,我实际上是使用已经存在的AOP框架并自己加以改造后融入到自己的框架里面的。
我直接引用了源代码,只是对AspectSharp项目进行增加,以符合自己框架的需求
目录ApectConfig是我自己添加的,主要是创建配置文件上的各个节点
类AspectSharpConfiguration
<configSections>
</configSections>
<!-- AspectSharp settings-->
<AspectConfigSource>
</AspectConfigSource>
配置文件描述:
ImportConfigCollection 配置节 描述要引用的类库
InterceptorConfigCollect
AspectInterfaceConfigCol
这里可以看出 接口IDataMapper中的Delete()方法 要进行日志处理
接口IDataMapper中的Insert()方法要进行分布式事务处理
以下是代码了,可能有点长,但通过代码和上面额度配置文件可以了解如何使用
//我专门建立了一个类UsersBusinessOfAOP
public class UsersBusinessOfAOP
{
}
从以上配置文件看出,对IDataMapper接口的Insert方法进行横切控制,
在上面的这个业务逻辑代码中看不到有任何事务代码的例子,十分清爽
那么事务代码在哪里呢?
在这个另外建立的项目中,和上面的那个业务项目工程没有任何关系
namespace AOP.InterceptorApplication
{
}
//如果配置文件是指向的TransactionScope的话,就是执行下面这个代码
public class TransactionScopeIntercep
{
}
从测试结果来看,事务顺利执行了,测试调试界面就不再这里帖出来了。
从以上可以看出,AOP的优越之处,完全不用在原来的项目中去做什么,只需要重新写个项目即可,当然罗
业务系统至少得启用配置文件,各个控制类和业务类应该都继承接口,这是最基本得条件,如果这些都不满足,AOP
得实现就很麻烦了
注意:这里建议用接口,不要使用类,因为直接的类有限制,要类的方法是virtual,因此在设计的时候尽量用接口编程
,这些就没什么问题了。
AOP面向方面的横切思想模型是对面向对象的有力补充,是一个值得深入研究的思想技术。
AOP的成功应用,给框架搭载上了一个飞翔的翅膀。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gsnidi2002/archive/2008/09/04/2882167.aspx
- ORmapping 4
- 关于ormapping
- ORMapping 3
- 基于配置的ORMapping框架浅析之4(面向方面的AOP切面思想引入)
- ORMapping,真郁闷...
- 持久层与ORMapping
- Hibernate——ORMapping
- BeetlSQL 实现 ORMapping
- ORMapping 框架使用最佳实践
- ORMapping 框架使用最佳实践
- Delphi下ORMapping的简单实现
- 采用反射模拟简单的ORMapping
- 历史车轮下的ORMapping技术
- EAS BOS ORMapping 元数据解析示例
- 总结: 设计实体 和 ormapping 的思路
- Hibernate——ORMapping(二)
- ormapping框架和jdbc的比较
- Hibernate(ORMapping) 上手实例与配置过程
- Spark-SQL和Hive on Spark, SqlContext和HiveContext
- linux下编译dcmtk的Android版本
- OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll。请尝试重新安装改程序已解决此问题
- RabbitMQ使用场景练习:路由选择Routing(四)
- RabbitMQ使用场景练习:主题Topic(五)
- ORmapping 4
- phpstorm安装配置
- java 常用正则表达式汇总
- MFC设计
- grails项目如何设置session的时间长短
- 微信小程序-省市区三级联动
- androidstudio工具
- 分布式智能控制-命名
- 加密解密算法java实现(4)—MD5