问题标签 [spring-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 投票
4 回答
2746 浏览

java - Aspectj 没有捕捉到 spring 框架中的所有事件?

我的项目基于spring框架2.5.4。我尝试为一些控制器添加方面(我使用 aspectj 1.5.3)。

我在 application-servlet.xml 中启用了自动代理,只需将这些行粘贴到 xml 文件的末尾:

创建方面:

我的控制器:

当我在方面顾问中设置刹车点并调用控制器时,我只捕获 afterHandleRequest() 而不是 afterRebildThumbnail() 我做错了什么?

笔记

我代表无法访问 SO Beta 的朋友提出这个问题,但我不知道这是怎么回事。

编辑

确实有一些拼写错误,感谢 Cheekysoft。但问题仍然存在。

0 投票
1 回答
4519 浏览

spring - 如何使用 Spring AOP(或 AspectJ)定义/配置多个方面的优先级

我已经能够在业务服务类上使用 Spring AOP(结合 AspectJ 注释)定义多个方面(一个是 @Before,另一个是 @Around)。

目前,他们被一一(按顺序)调用。但是我想知道如何定义调用方面的优先级以及在哪里。

请就 Spring AOP 指导我。请注意,我使用的是 Spring 2.5.3 框架。

0 投票
9 回答
29092 浏览

spring - 使用 aop 的性能影响

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

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

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

0 投票
2 回答
7548 浏览

java - 切入点不适用于 Spring AOP

为了使用 Spring AOP 实现 Logging,我遵循了这些简单的步骤。但它似乎不起作用。任何帮助都会很有用

1) 创建MyLoggingAspect

}

2)创建了一个我想要记录的类( TixServiceImpl )

3)创建了一个spring-aspectj.xml文件

4)创建了一个简单的测试客户端(TixClient

5)它给了我以下输出

0 投票
1 回答
1554 浏览

java - 第三方类的 AOP

我在 spring 中使用了 AOP,没有遇到任何实际问题,主要用于事务管理,这很有吸引力。

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

0 投票
6 回答
14111 浏览

database - 实施审计追踪——Spring AOP vs.Hibernate Interceptor vs DB Trigger

我在这方面找到了几个讨论线程——但没有什么可以将所有三种机制的比较放在一个线程下。

所以这是我的问题...

我需要审核数据库更改-插入\更新\删除到业务对象。

我可以想到三种方法来做到这一点

1) 数据库触发器

2)休眠拦截器

3) 春季AOP

(这个问题特定于 Spring\Hibernate\RDBMS - 我想这对 java\c# 或 hibernate\nhibernate 是中性的 - 但如果您的答案取决于 C++ 或 Java 或特定的休眠实现 - 请指定)

选择其中一种策略的优缺点是什么?

我不是在询问实现细节。-这是一个设计讨论。

我希望我们可以将其作为社区 wiki 的一部分

0 投票
3 回答
3918 浏览

spring - Spring AOP 错误

什么会在运行时导致此问题?:

匹配的通配符是严格的,但找不到元素“aop:config”的声明

这是相关的 Spring XML:

请注意,我已经将aspectjweaver.jaraspectjrt.jar放在类路径中。

0 投票
3 回答
9497 浏览

spring - 使用 Spring 和 AspectJ 可配置与组件

使用 AspectJ 时,为什么要使用 @Component 而不是 @Configurable。

我已经为 @Transactional 支持、自调用方面以及注入 JPA 实体设置了 Spring 和 AspectJ。这很好用。

我将@Component 用于大多数需要注入的类,因此要么将它们注入到它们的依赖项中。或者,当我不能时,注入 ApplicationContext 然后使用 getBean() 作为最后的手段。我只为需要注入的 JPA 实体(Hibernate)保留 @Configurable。我还开始使用 @Configurable 进行 jUnit 测试,以简化编写测试。这也很好用。

但我很好奇。如果 AspectJ 现在使用 @Configurable 注释自动注入(beanifying)任何东西,不管它是如何构造的;getBean()、new()、@Autowired。为什么我不切换到对我所有的 bean 使用 @Configurable 呢?然后我可以完全取消应用程序上下文和 getBean(),而只需 new() 任何我无法注入的类。

我意识到我没有提到 XML bean 配置。我并不回避这一点,但这个项目恰好不需要任何东西。我只是在测试时构造函数或设置器注入依赖项。好简单。

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 回答
1719 浏览

multithreading - Spring-AOP 和多线程

我在对我的应用程序进行多线程处理时遇到问题。似乎 AOP 无法跨越多个线程,即我无法在单个事务中执行所有线程。每个线程在处理时更新数据库。我正在使用fixedThreadPool 和ExecutorCompletionService。这是春天的问题吗?