问题标签 [aop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
110 浏览

architecture - 命名空间组织 - AOP 验证器

我已经开始在我们的开发框架中使用方面进行参数验证。它工作得很好,而且我喜欢不用验证代码乱扔公共方法的前半部分。

我想知道是否有人对您将在命名空间结构中放置参数验证的位置有任何建议?我的一部分认为,既然它是顶级功能,它应该在顶级产品命名空间中——很像 System 在 .NET Framework 中的使用方式。我只是担心核心程序集会随着更多这样的功能而膨胀,因为它会进一步发展。

就目前而言,我将它们放在以下位置:

[公司].[产品].ParameterValidators

在此示例中,ParameterValidators 是包含该功能的类(方面)的名称。

除此之外,如果有人对将方面合并到现有代码库中与结构布局相关的进一步建议,我将不胜感激。

0 投票
3 回答
20951 浏览

java - 运行 Spring 单元测试的 AOP 问题

我有一个 Spring Web 应用程序,它被配置为使用 JDK 代理进行 AOP。AOP 注释(例如@Transactional)是在接口上声明的,而不是在实现类上声明的。

应用程序本身运行良好,但是当我运行单元测试时,它似乎试图将 CGLIB 用于 AOP 功能(而不是 JDK 代理)。这会导致测试失败 - 我在下面附加了堆栈跟踪。

我不明白为什么在运行测试时使用 CGLIB,因为 Spring 配置与应用程序运行时的配置基本相同。一个可能显着的区别是测试配置使用DataSourceTransactionManager而不是 JTA 事务管理器。测试类本身都扩展AbstractJUnit4SpringContextTests,难道这个类以某种方式硬连线以使用 CGLIB?

编辑:其中一位评论员要求我发布 Spring configuration。我以缩写形式将它包含在下面(即省略了不相关的 bean 和 XML 名称空间)。

spring-servlet.xml

applicationContext-service.xml

applicationContext-test.xml这仅在运行单元测试时包含。它的目的是覆盖在其他配置文件中声明的一些 bean。

0 投票
2 回答
1645 浏览

c# - 使用 PostSharp 添加 OnException 属性

我正在探索一些 AOP,似乎使用 .NET PostSharp 是要走的路。

发生异常时,我想对数据库进行一些简单的日志记录。但是,我发现很难找到任何超越基础的使用 PostSharp 的真实可靠示例。我尝试了以下方法:

然后将[LogException]属性附加到方法

但我得到一个编译错误:

我不得不承认我对此很陌生,但这似乎是一个有趣的概念,我认为我只需要指出正确的方向

0 投票
2 回答
719 浏览

c# - Microsoft Compact Framework 3.5 上的 AoP

我试过使用 Postsharp,但他们目前的实现目标是 2.0,让它工作变得很痛苦。我是否应该推出自己的 AoP 实施(我在这里考虑一个非常基本和实用的实施)

还是有一个我不知道的替代方案?

0 投票
3 回答
1372 浏览

c# - 监控使用统计——它是如何完成的?

Windows、Firefox 或 Google Chrome 都监控使用统计数据并分析发送给它们的崩溃报告。我正在考虑在我的应用程序中实现相同的功能。

当然,在应用程序中添加大量日志语句很容易,但这是我想要避免的方法,因为我不希望我的代码在函数中有太多的横切关注点。我正在考虑使用 AOP 来做这件事,但在此之前我想知道其他人是如何首先实现这个功能的。

有人有什么建议吗?

澄清:我正在开发桌面应用程序,不涉及任何 RDBMS

0 投票
3 回答
176 浏览

.net - 为记录目的捕获事件

启动应用程序时,我需要知道某些方法何时被触发。如何使用属性和 AOP 技术做到这一点?

最简单的方法是在事件方法中记录时间,例如:

并将日期时间保存到数据库中。但这绝对是不可取的,因为这样做会留下很多横切功能,使维护工作更加困难。我正在考虑使用属性来解决这个问题。PostSharp 在这里似乎是一个很好的候选者,因为它可以拦截方法调用并执行您想要的任何预处理和后处理。但显然缺少的一件事是,如果我不编写大量自定义代码,它就无法处理事件。

有没有可以自然处理事件的框架?

0 投票
3 回答
1208 浏览

.net - 在数据库事务中自动包装单元测试?

[编辑(哈伦):重复]

我正在寻找一种将我的 NUnit 集成测试自动包装在数据库事务中的方法,以便在测试结束时自动回滚测试所做的更改。理想情况下,我会用自定义属性装饰某些测试方法,这会导致 NUnit 在测试开始时创建事务并在测试结束时回滚...我可以编写属性,但我不知道在哪里添加检查它。

测试数据库大小为 3GB,因此无法在每次测试开始时恢复它。我知道我可以在每个测试的主体中手动创建一个事务,但我正在寻找更优雅的东西。

也许有一个 IL 重写工具(也许是 AOP 框架)可以为我做到这一点?有人有什么建议吗?

0 投票
6 回答
7867 浏览

.net - 有 Postsharp 生产经验的人吗?

有没有人在生产环境中使用过 Postsharp AOP 框架?有什么陷阱吗?为了做一些日志记录等,Postsharp 可以与 Log4Net 结合使用吗?

任何有关将 Postsharp 与 Web 应用程序和/或 Log4Net 一起使用的教程都将受到高度赞赏。

0 投票
2 回答
1821 浏览

spring - Spring AOP:通过方面应用属性

这里的目的是处理资源的混淆密码。

我们有一个 Advisor 拦截对 setPassword 的调用并解密参数。

我们设置了一个看起来有点像这样的模板:

我不清楚使用它的确切语法。最明显的方法是:

但这不能正常工作,因为密码属性应用于内部 bean,这意味着顾问将不会完成它的工作。

那么,这个呢:

没有。Spring 抱怨 ProxyFactoryBean 没有密码属性。当然,事实并非如此。具有密码属性的东西是工厂 bean创建的东西。

布勒?

0 投票
9 回答
29092 浏览

spring - 使用 aop 的性能影响

我们已经开始将 spring aop 用于我们应用程序的横切方面(目前的安全性和缓存)。

我的经理担心这项技术的性能影响,尽管他完全了解其好处。

我的问题,你有没有遇到过使用aop(特别是spring aop)引入的性能问题?