首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于第三方类的AOP

用于第三方类的AOP
EN

Stack Overflow用户
提问于 2009-01-30 16:18:06
回答 1查看 1.6K关注 0票数 1

我在春季使用过AOP,没有真正的问题,主要用于事务管理,对此它很有魅力。

我的问题是这个..。到目前为止,我在AOP中看到的唯一例子是切分您自己创建的类。是否可以在第三方库中切分类,例如数据库连接类。上下文是,当oracle数据源执行对数据库的调用时,我希望创建一些日志并收集信息,不幸的是,数据库包含在oracle类文件堆栈中。在执行SQL时,如何切分这个类/方法?

EN

回答 1

Stack Overflow用户

发布于 2009-01-30 16:54:41

我认为这是可行的:

让DataSource

  • Apply负责根据建议中的DataSource

  • 上的getConnection()方法初始化

  • ,将返回的连接封装在一个新类( "LoggingConnection“)中,该类实现连接,并将所有方法委托给”真正的“包装连接(我相信这是装饰器模式),

  • 将您需要的任何日志代码添加到”LoggingConnection“类

请记住,此方法创建原始DataSource的代理,并为每个方法调用委托给它。在数据库操作的上下文中,这不会造成太多额外的开销。您将希望非常小心您的代码正在做的事情,以免它抛出异常并阻止连接的正常运行。也许使用try/catch/finally,并将委托给finally块中的“真正”连接的调用。

另一种完全不同的方法是使用AspectJ并进行加载时编织。这样,一旦ClassLoader加载了类,您就可以用新的功能来修饰它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/496080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档