问题标签 [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 回答
14941 浏览

java - 在 Spring 中如何管理对象池?

据我了解,在 Spring 中,默认情况下所有对象都被视为单例。如果单例设置为 false,则每次请求都会提供一个新对象。

但是如果我想合并对象怎么办?说设置从最小 1 到最大 10 个实例的范围?这可能使用Spring吗?

0 投票
6 回答
1157 浏览

c# - AOP 脏跟踪

在过去,我使用了几种不同的方法对我的实体进行脏检查。我一直在考虑使用 AOP 在新项目中完成此任务的想法。这将要求我在我想要在设置属性时调用脏标志逻辑的类中的每个属性上添加一个属性。如果我必须为属性的每个属性添加一行额外的代码,那么仅在设置器中调用 SetDirty() 方法有什么好处。我想我在问使用 AOP 方法有什么好处(如果有的话)?

0 投票
4 回答
36279 浏览

java - 为什么 AspectJ 不编译 Spring 的 @Configurable 工作?

更新 5:我已经下载了基于最新 Eclipse 的最新 Spring ToolsSuite IDE。当我将我的项目作为 Maven 项目导入时,Eclipse/STS 似乎使用 Maven 目标来构建我的项目。这意味着 AspectJ 最终在 Eclipse 中正常工作。

更新 4:我最终只使用 Maven + AspectJ 插件进行编译时编织,有效地绕过了 Eclipse 的机制。

更新 3: AspectJ 的 Eclipse 插件似乎破坏了 Eclipse 正确发布到 Tomcat 的能力。只有通过删除项目中的 AspectJ 功能,我才能让它再次正确发布。很烦人。

更新 2:我现在在 Eclipse 中工作。这么说让我很不舒服,但我不知道我是如何从 Eclipse 或 Maven 构建中得到它的。它似乎是编译问题而不是运行时问题。

更新 1:看来我已经通过 Maven 构建让它工作了,但我不知道如何。Eclipse 仍然无法正常工作。我在pom.xml中唯一更改的是添加这些(无关紧要的?)配置参数:

我实际上担心我会重复这个问题,一切都不一致。随着我了解更多,我会不断更新这个问题。

关于 Eclipse,我通过获取我希望编织的二进制方面(在本例中为 spring-aspects.jar)并将其从我的类路径中复制出来,取得了一些进展。然后我将这个现在的外部 jar 添加到我的Aspect Path中。完成此操作后,Eclipse 会在我的代码中正确显示 AspectJ 标记。令人讨厌的是,我不能将spring-aspects.jar留在我的Java 构建路径中,该路径由 Maven 通过 Maven 插件为我维护。然而,出于某种原因,AspectJ 插件看不到二进制方面,除非它们被显式添加到Aspect Path中。


原帖: @Configurable 是一个 Spring 注释,它允许将依赖项注入到 Spring 外部实例化的对象中(例如,通过 Hibernate 或某些工厂类)。

我之前在加载时编织中使用了这个注释,它大部分都有效。有时我会启动并且不会注入任何东西。这个问题产生了这个 StackOverflow 问题。答案并不多,但大多数人建议我尝试编译时编织,因为可靠性更高。

我为 Eclipse 和 Maven 安装了 AspectJ 插件。这两者都产生似乎是正确编译的类。在 AspectJ 编译之前,我在文本编辑器中打开了其中一个类,但没有发现对 AspectJ 的引用。我在 AspectJ 编译后打开它,Eclipse 和 Maven 生成的版本都引用了org.aspectj.weaver.MethodDeclarationLineNumber。这就是为什么我认为它被正确编译的原因。问题是一旦部署,就不会注入任何依赖项。

我的 Spring applicationContext.xml确实包括以下内容:

以上是标记为@Configurable 的类完成DI 所需的全部内容吗?在从加载时编织到编译时编织的转换过程中,我从我的 applicationContext.xml 中删除了META - INF/aop.xml<context:load-time-weaver /> ,并从我的context.xml中删除了Spring 的 Tomcat 编织器。

我该如何进一步调查这个问题?可能的原因是什么?

0 投票
1 回答
276 浏览

c# - 这方面有什么问题

我只希望在设置属性时调用它。为什么这不起作用?

0 投票
2 回答
3164 浏览

spring - Spring AOP - 我如何转换代理 bean?

我已经在 bean 上配置了 Spring-AOP。

当我访问这个 bean 时,它会返回一个 spring 代理类而不是实际的 bean。

有什么办法可以得到真正的豆子吗?

应用程序上下文.xml

一些.java

这抛出:

java.lang.ClassCastException: $Proxy19

0 投票
1 回答
722 浏览

c# - Postsharp - 获取调用程序集?

使用 Postsharp OnMethodBoundaryAspect 时,是否有某种方法可以获取启动对给定方法的调用的调用程序集?GetCallingAssembly 只返回被调用方法所在的程序集。

注意 - 我在 postsharp 论坛上遇到问题,否则我会在那里发布。

0 投票
2 回答
557 浏览

c# - PostSharp 对象映射器

我正在考虑将 PostSharp 用于实体到 DTO 和 DTO 到实体的映射器。为大约 100 个实体手动执行该任务将是维护的噩梦。我已经在 codeplex 上查看了 AutoMapper,但我认为开销可能是我的情况下的一个严重问题,此外我觉得 PostSharp 可以让我对映射约定进行一些额外的控制。如果有人可以分享这个问题之王的经验,那就太好了。

我想的方向是这样的(如果这不可能,请有人告诉我):

我打算坚持上课的方面将用内容填充接下来的两个方法:

第一种方法将返回基于 DTO 的实体,第二种方法将执行相反的操作。在我计划遍历每个属性的方面内,创建新目标并将属性的值分配给目标对象的对应项。这是否可以在编译时完成而没有任何运行时开销?

0 投票
3 回答
141 浏览

c# - 摆脱每次使用对象时检查设置值的负担

想象一个基于选项的应用程序。

我想在每个字符串的末尾添加一个感叹号(这本身就是一项非常简单的任务)。但是,我在 web.config 或 XML 文件中有一个选项,因此如果该选项为真,则附加感叹号,否则不附加。

我知道如何检查 web.config 或 xml 文件的设置值,但是,最好的方法是什么?在字符串的情况下,它将在任何程序中大量使用。

我可以写:

但是,这对于大型(甚至小型)代码库是不切实际的。有没有办法摆脱这种手动检查?我听说 AOP 或属性可能能够解决这个问题,但我还没有看到一个例子。

有哪些方法可以解决这个问题?

0 投票
1 回答
299 浏览

delphi - Delphi Prism Cirrus 访问和设置函数的结果

背景

这个问题与Delphi Prism 中面向方面编程的新Cirrus基础设施有关。

我目前有一个方面,我正在自动注入到一个类中,并试图使用aMethod.SetBody函数修改目标代码。到目前为止,我使用Cirrus 介绍文档 wiki 上的 Logging 示例代码作为基础构建了我的代码。

问题

在执行和不执行原始函数体的情况下,如何访问注入的函数的结果?

我希望能够将函数的结果设置为在一个代码路径中绕过对 OriginalBody 的调用,并将其设置为另一个代码路径来调用 OriginalBody 并在我的 Aspect 代码中使用 OriginalBody 的后续结果。我最初认为这可能是Aspects.RequireResult方法的预期目的,但这似乎在我的情况下强制执行 OriginalBody,导致代码重复。

0 投票
6 回答
1985 浏览

java - 面向方面编程的未来

我是AOP领域的新手。我第一次编写应用 AOP 概念的代码时,我很高兴了解方面如何消除应用程序中的横切模式。应用 AOP 解决诸如安全、日志记录、事务、审计等横切模式的想法让我不知所措。
然而,当我第一次向我工作的客户提议使用 AOP 时,我被告知他们不支持它。有人告诉我,AOP 意味着更多的维护!如果您的代码更改,您的切入点必须更改。因此,每当您更改应用它们的代码时,您可能必须分析、更改和测试您的方面?
对此你有什么想说的?为什么主流公司还没有对 AOP 的广泛使用开放?AOP 世界将走向何方?