问题标签 [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 投票
0 回答
721 浏览

spring - Spring 存储库中的 AspectJ 连接点

我正在尝试拦截对我的 Repository.save 方法的调用。这基本上解释了HereHere。唯一的问题是它根本不起作用。我显然错过了一些东西,但经过几个小时后,我不知所措。

我正在使用 Spring 4.1.6 和 AspectJ 1.8.5。

代码:

我的配置类中有趣的注释:

目标存储库:

方面:

如您所见,我尝试了几种不同类型的切入点。但它们都不起作用。我怀疑我错过了与代理有关的事情。建议(双关语)表示赞赏。

0 投票
1 回答
392 浏览

java - Spring-Aspect - 查找方法调用堆栈是否具有特定的包类

0 投票
1 回答
395 浏览

java - 在侦听 RabbitMQ 消息的上下文中不会触发方面

下面FailedMessageAspect.afterMethod()在下面被成功调用RabbitConsumerMain.main()。但是,当它在侦听 RabbitMQ 消息的上下文中使用时不会被调用 - 当MessageHandlerImpl.handleMesasge()从 RabbitMQ 队列接收消息时。知道为什么吗?

FailedMessageAspect.java

MessageHandlerImpl.java

RabbitConsumerMain.java

消费者配置.java

0 投票
4 回答
12137 浏览

java - 在 Spring 测试中未调用方面

我正在使用 Spring 4.16,并且我有我的 ValidationAspect,它验证方法参数并在出现问题时抛出 ValidationException。当我运行服务器并发送请求时会调用它,但来自测试时不会调用:

我在其中创建方面 bean 的配置文件

所以这是测试,它应该在进入 addSoftware 方法之前抛出 ValidationException,因为它是一个无效的软件对象。

如果我运行该服务并从发布请求中添加此无效用户,则会抛出应有的 ValidationException。但由于某种原因,它永远不会从测试层执行 ValidationAspect 方法

还有我的服务

我不明白为什么不调用方面,因为 mockedSoftwareService bean 位于功能包中,并且 bean 名称以“Service”结尾,因此它满足这两个条件。您对可能发生的事情有任何想法吗?提前致谢


编辑

0 投票
2 回答
12511 浏览

java - 依赖注入到 Spring 非托管 bean

我有一个非托管的 JPA 域类。它通过new运算符实例化。

在我的UserAccount课堂上,我有一个beforeSave()方法,它依赖于我SecurityService对密码进行哈希编码。

我的问题是“如何让 spring DI 将安全服务注入我的实体?”。似乎 AspectJ 和 LoadTimeWeaving 是我需要的。我已经尝试了一个配置数组,但我似乎无法让它们中的任何一个工作。NullPointerException尝试在注入的对象上调用方法时,我总是得到一个。

UserAccount.java(这是 JPA 实体)

试图指示 spring 使用 AspectJ:

NitroApp.java(主类)

build.gradle(配置)

0 投票
3 回答
3638 浏览

spring - 如何在spring方面访问自定义注释值

我正在尝试从jointCut 访问自定义注释值。但我找不到办法。

我的示例代码:

试图访问@Aspect类。

但是,我没有看到任何访问值的范围。

我尝试访问的方式如下代码

我没有看到任何值返回 input = input1。如何实现这一目标。

0 投票
1 回答
811 浏览

gradle - 如何通过 gradle 为 AspectJ 和 spring-aspects 在 STS (eclipse) 中设置 .classpath

我有一个项目使用编译时将@Configurable 从spring-aspects 编织到我的类中,使用@Configurable。如果我使用 gradle 任务来构建和启动我的应用程序,我使用 Spring Tool Suite 3.7.0 并运行所有东西。(感谢插件:https ://github.com/eveoh/gradle-aspectj )。

现在我还想使用 AspectJ Eclipse 特性。通过将项目转换为 AspectJ 并添加 spring-aspects.jar 作为 AspectJ inpath,我手动运行了它。我也想通过 gradle 来做到这一点。可以通过以下方式将项目变成 AspectJ 特性:

如何配置 gradle 它还执行“添加 spring-aspects.jar 作为我的 inpath”步骤?

当我比较 .classpath 文件时,区别在于:

(类路径入口 org.eclipse.jst.j2ee.internal.web.container 已经存在,但缺少属性)

那么如何将这个片段添加到类路径中呢?我见过像这样修改类路径的示例:

...但我总是在这里得到一个错误: could not find method whenConfigured() for arguments [build_52wic5gr82z6rcs33lo3ix1lk$_run_closure7_closure12_closure13@73914b82] on org.gradle.plugins.ide.eclipse.model.EclipseClasspath_Decorated@6ca18169. 如何解决这个错误?这是配置 AspectJ inpath 以手动调整 .classpath 的正确方法吗?

0 投票
1 回答
2928 浏览

spring - Spring Aspects:指定要编织的包

我有一个 Spring / Hibernate 应用程序。Hibernate 创建的自定义类型需要 Spring 上下文,所以我使用 Spring Aspects 来提供它。

添加 Spring Security 后,我在 stderr 中收到了如下消息:

是否可以指定应该编织的类包并避免尝试编织其他包?

解决方案

将 META-INF/aop.xml 放到资源根目录下,排除不必要的包:

0 投票
0 回答
679 浏览

spring - 为什么我使用aspectJ模式事务时没有事务?

我有这样的服务层:

使用此配置:

一切都很好!因为我有基于代理的事务,所以在方法 B() 中没有创建新事务!但是一笔交易创建得很好!一切顺理成章!

但是这个呢?

这应该可以解决我的问题,必须创建新交易!但我有这样的错误:

0 投票
2 回答
4377 浏览

spring - 将自定义注释建议应用于 Spring Data JPA 存储库

我正在做一个 mysql 主从复制。我正在使用弹簧数据 jpa(弹簧靴)。

我需要的是所有写入操作都到主服务器和只读操作在多个只读从属服务器之间平均分配。

为此,我需要:

使用特殊的 JDBC 驱动程序:com.mysql.jdbc.ReplicationDriver

在 URL 中设置复制:

需要关闭自动提交。(*) 连接需要设置为只读。

为了确保将 JDBC 连接设置为只读,我创建了一个注释和一个简单的 AOP 拦截器。

注解

拦截器

以下是我的春季数据存储库

以下是我的经理(服务)课程。

在上面的代码中,@ReadOnlyConnection 注解是在 manager 或 service 层中指定的。上面的代码对我来说很好。这是一个微不足道的情况,在服务层我只从从数据库读取并写入主数据库。

话虽如此,我的实际要求是我应该能够在存储库级别本身使用@ReadOnlyConnection,因为我有很多业务逻辑,我在其他服务层类中都进行读/写操作。因此我不能把@ReadOnlyConnection在服务层。

我应该可以使用这样的东西

就像 spring 的 @Transactional 或 @Modifying 或 @Query 注解。以下是我所指的示例。

我是aspectj和aop世界的新手,我在ConnectionInterceptor中尝试了很多切入点正则表达式,但都没有奏效。我已经尝试了很长时间,但还没有运气。

如何完成所要求的任务。