aop 相关问题

AOP代表面向方面编程。如果您的问题是面向方面的概念和技术,或者使用任何语言的AOP扩展编程问题,请使用此标记。 AOP通过允许将“横切关注点”分离到各个方面来增加模块化。点击了解更多......了解它的全部内容。

尝试使用 AOP springboot 拦截字段上的 setter

我正在尝试在设置字段值时修改它。我正在尝试使用 Spring AOP。到目前为止,这是我的代码 // 翻译类 导入 java.lang.annotation.ElementType; 导入java.lang.

回答 2 投票 0

为什么Aspect和Interface注解时AspectJ日志没有触发?

我正在寻找一种方法来记录方法。 所以我开始研究 Spring-AOP 和 AspectJ 的示例。 然而,这些似乎都没有真正起作用,或者至少是缺失的部分......

回答 1 投票 0

从类内部调用 Spring @Async 方法

我有一个 spring 组件,它有一些方法如 @Async。 我想创建一个私有方法并运行 @Async 但它不起作用,因为 spring 不帮助从 bean 中进行自调用... 是

回答 2 投票 0

在 Fody 插件中,我可以从 IServiceCollection/DI 检索服务吗?

我将采用 https://github.com/vescon/MethodBoundaryAspect.Fody 作为我的 AOP 引擎。但是,由于它是一种编译时方法,因此我在如何从 IServiceCollec 检索服务方面遇到问题...

回答 1 投票 0

使以下静态初始化建议通用时出现错误

由于以下给出的建议仅适用于特定类别 @Before("静态初始化(org.mazouz.aop.Main1)") 我试图使建议通用,以便它适用于任何包 @

回答 1 投票 0

在 Spring Boot 应用程序中不起作用的方面

我正在使用 Aspects 创建一个 Spring boot 应用程序,但它不起作用。它没有被拾取。 我在自定义配置类中定义了 EnableAspectJAutoProxy。 @配置 @

回答 1 投票 0

Cytoscape - AOP Xplorer 交互

我在这个领域很新。我正在努力成为一名毒理学家,并撰写有关 hERG 抑制和长 QT 综合征的博士论文。我有很多文学方面的数据并在我的脑海中塑造它

回答 1 投票 0

升级到 java 11 后,AspectJ Maven 插件无法编译我的项目

我正在尝试将项目从 java 8 升级到 11。我已经更新了 pom,但在运行构建时收到有关方面J 无法编译它的错误。 这是我在下面得到的错误。 [错误]

回答 1 投票 0

如何使用 AspectJ 将字段添加到自定义注释的类

要使用aspectj向某个特定类添加字段,我们需要这样做 包com.test; 公共类我的类{ 私有字符串 myField; } 公共方面 MyAspect { 私有字符串 MyClass.myHiddenField;...

回答 2 投票 0

MDC.remove() 或 MDC.put() 中是否强制进行异常处理?

导入org.slf4j.MDC; MDC.put(ID1, id1); MDC.put(ID2, id2); MDC.put(ID3, id3); 尝试 { 返回 joinPoint.proceed(); } 最后 { MDC。

回答 1 投票 0

Spring CGLIB 和 CGLIB 有什么区别?

Spring不包含cglib依赖,cglib和spring cglib都有Enhancer类,一个是net.sf.cglib.proxy.Enhancer,另一个是org.springframework.cglib.proxy,这是什么

回答 5 投票 0

为什么在输出中的系统启动消息之前打印静态变量值

程序执行中哪些具体的事件顺序或方法调用导致在系统启动、线程启动和输出中的类型加载消息之前打印静态变量的值...

回答 1 投票 0

如何修改我的 AspectJ 代码以适用于任何类?

如何修改 AspectJ 代码以创建可应用于包中任何类的通用方面,而不是仅限于“Main”等特定类名称? 包组织。

回答 1 投票 0

API 方法调用时私有成员突然为空

发生了奇怪的事情:在我的 Web api 中,我在使用 Ninject 解析时将存储库注入到控制器中。存储库存储在私有只读成员变量中。工作完美! ...

回答 3 投票 0

ajc可以省略指定的@Aspect类,让spring aop来处理吗?

我的应用程序需要同时使用Aspectj和Spring AOP,Spring AOP有时很方便,但是当我使用ajc编译器时,它会编译所有带有@Aspectj注释的文件。 我的问题是:我可以...

回答 1 投票 0

调用 around 方面时发生 AOP 异常

我正在尝试在所有服务方法上运行一个方面。但这对于具有原始返回类型的方法似乎失败。我收到此错误 org.springframework.aop.AopInvocationException: ...

回答 2 投票 0

如何在另一个Spring项目中使用在第一个Spring项目中创建的带有aspectj @Aspect的注释?

我使用aspectj Aspect 创建了一个名为@ProjectAudit 的注释。我在名为projectaudit的maven项目中做到了这一点。 我的 ProjectAudit 注释是: 包com.example; 导入java.lang.annota...

回答 1 投票 0

为什么 Spring-AOP 切入点对 save(..) 有效,但对 saveAll(..) 无效

我有一个像这样的Spring数据存储库: 包 com.example.demo; @RepositoryRestResource 公共接口 FooRepository 扩展 JpaRepository { @覆盖 我有一个像这样的 Spring-Data 存储库: package com.example.demo; @RepositoryRestResource public interface FooRepository extends JpaRepository<Foo, Long> { @Override <S extends Foo> S save(S entity); @Override <S extends Foo> List<S> saveAll(Iterable<S> entities); } 还有这样的一个方面: @Aspect @Component public class FooAspect { @Before("execution(* org.springframework.data.repository.CrudRepository.save(*))") void crudSaveBefore(JoinPoint joinPoint) throws Throwable { System.out.println("crud save"); } @Before("execution(* com.example.demo.FooRepository.save(*))") void fooSaveBefore(JoinPoint joinPoint) throws Throwable { System.out.println("foo save"); } @Before("execution(* org.springframework.data.repository.CrudRepository.saveAll(*))") void crudSaveAll(JoinPoint joinPoint) throws Throwable { System.out.println("crud save all"); } @Before("execution(* com.example.demo.FooRepository.saveAll(*))") void fooSaveAll(JoinPoint joinPoint) throws Throwable { System.out.println("foo save all"); } } 当我运行 fooRepository.save(..) 时,在控制台中我看到: foo save 当我运行 fooRepository.saveAll(..) 时,在控制台中我看到 foo save all 和 crud save all 我期望 saveAll 只拦截 FooRepository 风味,因为我直接切点 package.class.method 。这似乎对 save 有效,但对 saveAll 无效。 这是因为saveAll中的参数是Iterable吗?或者泛型在这里发生某种类型擦除?还有别的吗? 看来是AOP问题。对于代理 FooRepository.saveAll,它调用 CrudRepository.saveAll @Before 表达式: AbstractAspectJAdvice 683 由于我遇到了类似的话题,我正在重新审视这个问题。我希望迟到的答复总比没有好。 我期望 saveAll 只拦截 FooRepository 风味,因为我直接切点 package.class.method 。这似乎对 save 有效,但对 saveAll 无效。 令我感到相当惊讶的是,并非所有 4 个切入点都匹配。令人困惑的问题是为什么 execution(* org.springframework.data.repository.CrudRepository.save(*)) 不匹配。我已经发现,这个问题不是由 Spring AOP 本身引起的,而是在本机 AspectJ 中表现出来。在那里,切入点也不匹配。 作为解决方法,更改切入点以使用 + 显式包含子类或实现接口的类: execution(* org.springframework.data.repository.CrudRepository+.save(*)) 现在,所有 4 个切入点都匹配,这也是说明原因的线索。 事实上 + 有帮助,意味着 AspectJ 切入点匹配器正确识别我们正在处理接口方法,并且 save 是跨层次结构继承的。与 saveAll 的区别在于类型擦除。没有泛型的saveAll看起来像List saveAll(Iterable),这与原始接口相同,而对于save来说,接口中的Object save(Object)与实现类中的Foo save(Foo)更多。也就是说,方法签名不直接匹配接口的签名,这就是为什么我们需要告诉 AspectJ 在匹配时也检查继承。 这并不是 AspectJ 中的错误,而是其在泛型类型和类型擦除方面的使用中的微妙之处。 saveAll 匹配的事实只是一个“幸运的机会”,因为在返回类型和方法参数中我们都使用特定类型,而泛型仅适用于这些类型的类型参数。然而,在 save 中,泛型类型直接按擦除方式使用。 反汇编类证实了我上面解释的内容: public abstract interface org/springframework/data/repository/CrudRepository implements org/springframework/data/repository/Repository { // ... // signature <S:TT;>(TS;)TS; // declaration: S save<S extends T>(S) public abstract save(Ljava/lang/Object;)Ljava/lang/Object; // ... // signature <S:TT;>(Ljava/lang/Iterable<TS;>;)Ljava/lang/Iterable<TS;>; // declaration: java.lang.Iterable<S> saveAll<S extends T>(java.lang.Iterable<S>) public abstract saveAll(Ljava/lang/Iterable;)Ljava/lang/Iterable; // ... } class FooRepositoryImpl implements FooRepository { // ... // signature <S:LFoo;>(TS;)TS; // declaration: S save<S extends Foo>(S) public save(LFoo;)LFoo; // ... // signature <S:LFoo;>(Ljava/lang/Iterable<TS;>;)Ljava/util/List<TS;>; // declaration: java.util.List<S> saveAll<S extends Foo>(java.lang.Iterable<S>) public saveAll(Ljava/lang/Iterable;)Ljava/util/List; // ... }

回答 2 投票 0

执行与执行呼叫加入点

我有两个不同的方面类来计算测试程序执行的非静态方法调用的数量。第一个方面对“调用”连接点上的方法进行计数: 切入点方法Calls() :

回答 2 投票 0

AspectJ:@Around 有效,但 @Before 中断 - 可能是什么导致了问题? [重复]

我正在 Spring Boot 应用程序中处理 AspectJ 方面,并且遇到了一个令我困惑的问题。具体来说,当我使用@Around建议时,一切似乎都按预期工作......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.