问题标签 [spring-aspects]

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 投票
2 回答
1129 浏览

java - Rest + Spring AOP + 接口不注入

我有一个用于记录的 Spring AOP 方面,其中可以通过向其添加注释来包含用于记录的方法,如下所示:

我一直在 Spring bean 上使用它,它工作得很好。现在,我想在 REST 服务上使用它,但遇到了一些问题。所以我有:

这个设置工作得很好。我试图添加日志记录的 Rest-service 现在有一个接口,并且不知何故把事情搞砸了。一旦我将@AspectLogging注释添加到其中一个方法中,就不会在 bean 中注入任何依赖项,而且,方面是较新的调用!

我尝试向有效的 REST 服务添加一个接口,但它得到了同样的错误。

有一个接口怎么会导致这种类型的问题?方面记录器适用于其他地方具有接口的类,似乎只有当它是 REST 服务时才会出现问题。

0 投票
3 回答
11833 浏览

java - Java AOP JoinPoint 不获取参数名称


我正在使用 Java Spring Mvc 和 Spring AOP 从用户那里查找参数名称。
我有一个控制器,它从用户那里获取参数并调用服务。
我有一个在服务之前运行的方面。
方面应检查用户名和 apiKey 参数是否存在。
这是我的代码:

控制器 :

域服务接口:

域服务:

还有我的 AOP 课:

在这种情况下,我希望得到“域”、“用户”和“apiKey”参数名称。
知道我在这里缺少什么吗?
谢谢,
或者。

0 投票
1 回答
562 浏览

spring - Spring Weaving:@Configurable 对象如果用作自动代理方法中的参数,则无法正确编织

请考虑使用 spring 4.0.7 的以下情况

对于 Eclipselink,我们使用 load-time-weaver。因此,我们想同时使用 @EnableSpringConfigured 和 @EnableLoadTimeWeaving 来试验 Springs @Configurable 注解。

这是功能齐全的,Spring-Beans 在构建过程中被完美地注入到 POJO 中。这个功能对我们很有帮助,因为我们希望在这些 POJO 中保留一些关于验证这些 POJO 的代码,而不是在 Bean 中的其他地方。

我们的一些 Spring 上下文包含不实现任何接口的 Bean,因为它们对于某些包是本地的并且仅在那里使用。可以说,FooLogicBean 就是其中之一。如果要将其注入另一个 Bean,并且某些 Spring-AOP-Aspect (not-aspectj) (如某些性能测量方面)在执行路径中,则 Spring 将为 FooLogicBean 创建一个 CGLIB 自动代理并注入它。这是功能齐全的,也可以完美运行。

当我们想要实际使用带有 @Configurable 注释的 POJO 作为 FooLogicBean 方法(如 fooLogicBean.doValidate(myPojo); )中的参数时,就会出现问题,分别是 CGLIB 代理。在这种情况下,一些重要的魔法阻止 POJO 通过 aspectj 编织(来自 spring-aspects 的 AnnotationBeanConfigurerAspect)。无论调用前面提到的 doValidate() 方法,它甚至都不会在代码的任何地方编织。

如果我们在 FooLogicBean 中创建该 POJO,但不将其用作方法参数,则由于 @Configurable,它会再次被编织。

在不知道 Autoproxy 创建代码的情况下,我们假设一些花哨的标记例程会阻碍一个类被 aspectj 检测到,如果该类已经在 spring-aop 中使用。在这种情况下使用意味着Access

有没有人尝试过这种晦涩难懂的星座并知道解决方案?

提前致谢!

0 投票
0 回答
249 浏览

eclipse - Spring 4.1.x 使用 AspectJ 和 spring-aspects 打破 Eclipse 编译

我有一个使用 Eclipse、AspectJ 和 Spring 以及编译时编织的设置。我多年来一直在使用它,没有任何问题。

从 Spring 4.0.7 升级到 4.1.0(或 4.1.1)后,/target 文件夹中没有生成类。此问题仅影响一个引用 spring-aspects 的项目。

我的工作区中有其他启用 AspectJ 的项目,使用相同的编译器设置等,但使用它们自己的方面。无论 Spring 版本如何,它们都会继续正常编译和输出类。

外部构建(Maven)适用于 Spring 4.0 和 4.1。

我认为版本在这里不是很相关,但无论如何我使用的是 AspectJ 1.8.2、Java 1.7、Eclipse Luna SR1(也出现在第一个 Luna 版本上)。

这是一个错误还是我错过了什么?

0 投票
0 回答
423 浏览

gradle - Gradle AspectJ 插件问题

自从我从 Maven 迁移到 Gradle 后,我的 Spring 应用程序面临一个主要问题:aspectj 不再有效。

例如,带有注释的类@Configurable(依赖于 aspectj)不会注入它们的依赖项。

为了替换aspectj-maven-plugin,我尝试使用这个插件:来自 spring security code base但它似乎与 Gradle 2.1 不兼容......

我还尝试应用此处描述的解决方案:http: //architects.dzone.com/articles/working-gradle-spring-aspects无济于事。

我只是想知道使用 Gradle + Spring 的人如何设法利用 aspectj ...

有人可以请教吗?

0 投票
2 回答
2905 浏览

spring - 使用 AspectJ 的 AOP 无法使用

我是 Spring 框架的新手,正在尝试一些示例示例来理解 AOP,这是我到目前为止所做的,但它不起作用。

问题是,一旦我添加<aop:aspectj-autoproxy />到 spring.xml,我的构建就会失败,说无法创建带有空指针异常的 bean。但是如果我在没有<aop:aspectj-autoproxy />标签的情况下运行应用程序,那么它运行良好但没有 AOP。

以下是我的项目的一些细节。 在此处输入图像描述

这里我有 AopMain ,它是运行的主类 LoggingAspect 我实际上定义了之前的方面 有两个模型 Circle 和 Triangle ShapeService 它实际上使用了上述两个模型

这里是给他们的代码

奥普主要:

记录方面:

圆圈:

}

三角形:与具有单个属性名称的圆形相同

形状服务:

现在,重要的文件 Spring.xml 出现了:

我收到如下错误:

但是,如果我尝试<aop:aspectj-autoproxy />在 Spring.xml 中注释该行并运行它能够创建 bean 的代码。请指导我我错过了什么吗?一些图书馆还是一些图书馆冲突?

有什么关系<aop:aspectj-autoproxy />

0 投票
0 回答
553 浏览

spring - 从 Spring AOP 执行拦截器后丢失自动装配的属性

在浪费了很多时间试图找到答案之后,我决定发布这个疑问。
我有一个我想被 Spring AOP 拦截的类。

ObjectToBeProxied.java

ExceptionHandlerAspect.java

Spring AOP 配置:

当我调用该方法ObjectToBeProxied.doStuff()时,ObjectToBeProxied.parameterValueService自动装配是可以的,而不是空的。

但是,当切面拦截方法调用ObjectToBeProxied.findEventParameterValue(..)并执行时ExceptionHandlerAspect.handleAround(..)ObjectToBeProxied.parameterValueService就不行了,它是空的。

调试它,我可以发现 Spring AspectObjectToBeProxied在拦截它后返回代理,但没有自动装配的属性对象。

我哪里错了?

0 投票
0 回答
592 浏览

java - 不知道为什么 Spring 方面没有触发

所以我开始深入研究 Spring AOP,并尝试使用注释创建一些基本方面,但由于某种原因它似乎没有触发。

这是我的方面:

当我设置断点时setup()markTest()我可以看到@PostConstruct方法setup()被触发,但markTest()没有。

这是我试图切入的 JUnit 测试用例:

这是我的 bean 配置 XML (testing.xml):

和几乎相同,只是handlers.xml组件扫描中的基本包参数不同utility.xml

显然我做错了什么。任何提示和建议将不胜感激。

编辑 :

好的,所以我尝试将切入点更改为:

针对正在测试的实际方法而不是 JUnit 测试方法,显然方面在这种情况下有效。

所以现在我的假设是 JUnit 和 Spring Aspects 彼此不喜欢。

现在我很好奇是否有办法解决这个问题。

0 投票
2 回答
1563 浏览

java - 无法构建 MockMvc(已经映射了 X 类型的处理程序)

我有简单的控制器类:

我想用 Spring Security 集成测试我的控制器。基于这篇文章,我创建了以下测试:

但是,在@Before方法内部,当build()被调用时,会抛出以下异常:

似乎 Spring 正在尝试两次实例化控制器。为什么?

网络应用配置:

完整的堆栈跟踪:

我可以在 MockMvc 独立设置中运行这个测试,但似乎我不能使用 spring data web integration,这同样很烦人。

0 投票
1 回答
526 浏览

spring - 使用 Spring 的 Native AspectJ 的问题

我正在使用 Spring 4 测试 AspectJ 编译时编织(一旦我让它工作,我想在我的项目中使用它)。我有以下服务等级:

这是我的 AspectJ 建议:

我正在尝试根据Spring 文档启用 AspectJ 编译时间编织。由于我正在使用注释,因此我尝试遵循此线程中提到的建议。

当我运行应用程序时,我没有看到将建议应用于 sayHello2()。我错过了什么?我在这里做错了什么?

github上的完整源代码