问题标签 [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.
java - Eclipse:如何将 Web 项目转换为 AspectJ 项目并使用 AJDT 插件进行编织和运行?
我想做的事:
- 我想将 @Configured 注释与 Spring 一起使用。它需要启用 AspectJ。我认为使用 AJDT 插件进行编译时编织可以解决这个问题。在安装插件之前,应该注入我的 @Configured 对象的依赖项保持为空。
我做了什么:
- 为 Eclipse 3.4安装了AJDT:AspectJ 开发工具插件。
- 右键单击我的 web 项目并将其转换为 AspectJ 项目。
- 启用编译时编织。
什么不起作用:
- 当我现在启动 Tomcat 6 服务器时,我得到一个异常*。
其他信息:
- 我没有在项目属性的 AspectJ Build 和 AspectJ Compiler 部分中配置任何内容。
- 首选项下的 JDT Weaving 表示启用了编织。
- 我仍然在项目属性下有 Java 构建路径和 Java 编译器。而且它们看起来就像我之前配置的一样(而上面的两个新条目没有配置)。
- 我的@Configured 对象文件的图标看起来像任何其他文件(即没有任何方面的指示,我认为应该有)。文件名是 MailNotification.java(而不是 .aj),但我想它应该仍然可以工作,因为我正在为 AspectJ 使用 Spring 注释?
- 我还没有找到任何教程或类似的教程:如何将 Spring Web 应用程序项目转变为 AspectJ 项目并使用 AJDT 插件将方面编织到文件中,所有这些都在 Eclipse 3.4 中。如果那里有类似的东西,我会非常有兴趣了解它。
我想知道的:
- 然后去哪儿?我只想使用Spring的@Configured注解。我也在使用@Transactional,我认为它也需要AspectJ。
- 如果可能的话,只要满足我的需求,我想尽可能少地学习 AspectJ。这个主题看起来很有趣,但是很大,我想做的就是使用上面提到的两个 Spring 注释。
*** Tomcat 6 启动时的异常:
spring - 自动装配使用 @Component 注释的非托管 Bean
我想使用@AutoWired 将配置有@Component 的非托管bean 注入托管bean。我很确定我的配置是正确的,但由于某种原因,我不断收到异常:
根据错误,我猜它无法找到 Baz 类,但我不知道为什么。我的理解是 XML 配置中的 context:spring-configured 元素应该允许我这样做。我还确保包含适当的 jar 文件(spring-weaving.jar 和 aspectjweaver.jar)。
这是我设置的一个简单示例。
我的 XML 配置:
我有一个托管 bean:
还有一个非托管 bean:
有什么我想念的吗?
编辑:日志列出了它实例化的 bean,而 foo.Baz 不是其中之一。我不知道为什么它没有选择 @Component 注释类。
spring - 我可以使用 AOP 注释在 spring 中注入代码吗?
是否可以执行以下操作:
并让它像下面这样有效地运行?
我知道 Spring 有各种 AOP 支持,但我能找到的最好的是 AOP 代码,它经过注释,以便在特定方法之前或之后执行。我想做相反的事情并注释应该更改的代码。
最终,我可以在方法内部进行上述检查,但是注释的处理方式提供了额外的文档,这使得用户需要特定的权限而无需使文档与代码保持同步。
java - Spring - @Transactional - 在后台发生了什么?
我想知道当你用 注释方法时实际发生了@Transactional
什么?当然,我知道 Spring 会将该方法包装在 Transaction 中。
但是,我有以下疑问:
- 我听说 Spring 创建了一个代理类?有人可以更深入地解释这一点。该代理类中实际存在什么?实际课程会发生什么?以及如何查看 Spring 创建的代理类
- 我还在 Spring 文档中读到:
注意:由于这种机制是基于代理的,只有通过代理传入的“外部”方法调用才会被拦截。这意味着“自调用”,即目标对象中的一个方法调用目标对象的某个其他方法,即使调用的方法标有
@Transactional
!
来源:http ://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
为什么只有外部方法调用将在事务下而不是自调用方法?
spring - Spring @Configurable with Compile Time Weaving 的启动性能
这是我关于堆栈溢出的第一个问题,所以请善待。
我正在运行一个应用程序
- 春天 2.5.x
- 可配置的注释
- 编译时编织 (CTW)
- 行家
- 日食/ajdt
我使用 CTW,一切运行良好。但是如果我第一次实例化一个带注释的类需要很长时间。第二次非常快。
查看第一次调用的分析器堆栈跟踪,我发现 org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(Method) 使用了 93% 的时间
在第二次调用的堆栈跟踪中,只有 1% 的时间用于此方法。更糟糕的是:第一次调用的时间大约是第二次调用的 10 倍。
我想知道,因为我认为 CTW 不再需要织布工。
但似乎只有当有人在这个类上调用 new 时,Spring 才开始分析原型 bean。它使用 aspectj weaver 来分析需要做什么,并为下一次调用做好准备以加快这个过程。
有没有人有任何加速初始化注释类的第一次调用的经验?
这是我的 pom 的一个片段:
java - 测试 Spring AOP 方面
在编写方面时,我如何测试它们是否匹配以及在我想要它们时调用它们?
我在@Aspect
Spring 2.5.6 中使用声明。
我不关心功能,否则会提取和测试。
java - 春天的看点
当我尝试在 spring 中自动连接 aspectj 时出现以下错误
我的 appContext.xml 条目看起来像.....
......
有关如何消除此错误的一些帮助.. 不幸的是,该站点http://forum.springsource.org被网络防火墙阻止.. 任何快速帮助将不胜感激。
如果我添加该行,这就是我得到的
java - 使用 Spring AOP 进行方法分析(基本执行时间)
我正在寻找一种功能或软件,它可以让我轻松地分析我的方法执行时间并通过包过滤器选择要分析的内容。
我知道,它是分析器 101。我使用 TPTP 分析器。但我对此并不满意。坦率地说,我只是不明白它是如何工作的,当我分析我的应用程序(以分析模式启动服务器)时,永远什么都不做。(嗯,不是我所期望的:执行时间的简单输出)
所以我用系统时间来分析自己(在方法的开头和结尾添加一行)。也不是那么坏。
我的问题是:我想用 Spring AOP 测量方法调用前后的系统时间,你能给我指导吗?这是个好主意/坏主意?代码库很大,而且我们没有太多的单元测试,会不会很“危险”?
我不是要代码,我想我可以用这种链接自己做: http: //static.springsource.org/spring/docs/2.5.x/reference/aop.html
但是如果你有一个很好的教程(以前从未做过 AOP,只知道这个概念),我接受它。
java - Hibernate 延迟初始化帮助
我在尝试使用休眠删除时遇到问题。当我尝试删除时,我得到一个异常,说孩子存在并且存在 FK 违规。我也想删除孩子,但删除似乎不是级联的。在尝试解决这个问题大约一周后,我读到我应该使用 HibernateInterceptor 来保持会话打开,以便可以加载孩子。当我现在尝试执行此操作时,出现以下错误:
这是我的映射文件的摘录:
以下是应用程序上下文的摘录:
这是我的 DAO 中的方法:
我真的不知道我做错了什么。我没有一个非常复杂的模式,只有一个导致孩子(国家)的表。有什么想法可以解决这个问题吗?
java - 关于横切关注点的有趣 AOP 问题?
考虑一组具有与此类似的方法的 DOA
现在每个域 pojo ( Dom
) 都有一个sessionId
属性,并且对于域对象上的每个插入、更新或删除,都sessionId
必须传递一个,setSessionId(Long sessionId)
以便我们知道谁在做什么。但这似乎跨越了我们和我认为 AOP 将是插入sessionId
a@Before(JoinPoint)
或@Around(ProceedingJoinPoint)
建议的所有数据访问内容的好工具。这真的可行吗?DAO 大多是基于 Hibernate 和一些 Spring 的StoredProcedure
。