AspectJ是面向方面的Java编程语言扩展,可以实现横切关注点的清晰模块化,例如日志记录,错误处理,标准实施和功能变化。使用此标记可以了解有关此扩展程序的编程用法的问题。有关下载,支持,IDE集成和文档,请参阅此标记的“了解更多信息”。
我目前正在尝试使用 AspectJ 在构建时检测 Java 类。为此,我假设 ajc (https://eclipse.dev/aspectj/doc/released/devguide/ajc-ref.html) 因为 AspectJ 编译器是一个适合的...
当我在 Spring 中还有一个针对该 bean 的方面时,为什么不可能拥有通用 bean?
嗨,我有一个关于 Spring Aspects 的相当具体的问题,这让我很困惑。我尝试了 Springs 和 Apsects,并尝试了一个非常简单的示例来看看它是如何工作的: @成分
我正在尝试在我的应用程序中使用简单的日志记录方面,但建议没有运行,并且在控制台中没有收到任何日志。 添加了依赖项 - 我正在尝试在我的应用程序中使用简单的日志记录方面,但建议没有运行,并且在控制台中没有收到任何日志。 添加了依赖项- <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </dependency> 实体类- package com.ayushsingh.aopproject.entity; import org.springframework.stereotype.Component; @Component public class Student { private Long id; private String name; private String address; private Integer age; private Long phone; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Long getPhone() { return phone; } public void setPhone(Long phone) { this.phone = phone; } } 方面类- package com.ayushsingh.aopproject.aop; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { LoggingAspect() { System.out.println("Logging Aspect instansiated"); } // -Run before a getter @Before("execution(public String com.ayushsingh.aopproject.entity.Student.getName())") public void LoggingAdvice1() { System.out.println("Advice 1"); } // - Run before a method of a particular class @Before("execution(public String com.ayushsingh.aopproject.entity.Student.getName())") public void LoggingAdvice2() { System.out.println("Adivce 2"); } // - Run before all getters @Before("execution(public String com.ayushsingh.aopproject.*.get*())") public void LoggingAdvice3() { System.out.println("Advice 3"); } // - Run before all setters (methods with argument) @Before("execution(public void com.ayushsingh.aopproject.*.set*(*))") // -one or more arguments public void LoggingAdvice4() { System.out.println("Advice 4"); } // -for getters of all entity classes in the entity package @Before("execution(public * com.ayushsingh.aopproject.entity.*.get*())") public void LoggingAdvice5() { System.out.println("Advice 5"); } } 主课- package com.ayushsingh.aopproject; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableAspectJAutoProxy; import com.ayushsingh.aopproject.entity.Student; @SpringBootApplication @EnableAspectJAutoProxy public class AopProjectApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(AopProjectApplication.class, args); } @Override public void run(String... args) throws Exception { // -Create Student object Student student = new Student(); student.setId(1L); student.setAddress("Address 1"); student.setAge(25); student.setName("Ayush"); student.setPhone(8145000047L); String name=student.getName(); System.out.println("Name: " + student.getName()); } } 现在在运行应用程序时,我还必须从建议中获取日志,但由于我还使用调试器和断点进行了检查,因此这些方面根本没有运行。 我得到的输出是- 2024-02-07T15:20:41.325+05:30 INFO 21704 --- [ restartedMain] c.a.aopproject.AopProjectApplication : No active profile set, falling back to 1 default profile: "default" 2024-02-07T15:20:41.408+05:30 INFO 21704 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable Logging Aspect instansiated 2024-02-07T15:20:42.527+05:30 INFO 21704 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729 2024-02-07T15:20:42.607+05:30 INFO 21704 --- [ restartedMain] c.a.aopproject.AopProjectApplication : Started AopProjectApplication in 1.732 seconds (process running for 2.185) Name: Ayush 请帮我解决这个问题。 不要直接调用组件构造函数,让 Spring 容器通过在 getBean(..) 返回的应用程序上下文上调用 SpringApplication.run()(当前已被您丢弃)来为您完成此操作。 还建议您在使用新技术时至少阅读最少的文档,或者可以从功能示例应用程序开始,逐步了解更多功能,始终只更改一些小部分,如果某些功能不起作用,您可以恢复这些内容。
我有两个不同的方面类来计算测试程序执行的非静态方法调用的数量。第一个方面对“调用”连接点上的方法进行计数: 切入点方法Calls() :
Chronicle-Map:ClassNotFoundException 与 Gradle 和 AspectJ
我在使用 Gradle 构建并使用 AspectJ 的应用程序中遇到了以下异常。 该应用程序在从 Eclipse 中启动时工作正常,但在使用 G 构建后无法启动...
我有一个注释,例如: @Retention(运行时) @Target(AnnotationTarget.FUNCTION) 注释类 MyAspect(val 值: MyType) 我对这个注释有一个方面: @方面 公开课
如何完成freefairspectJ gradle插件的设置?
我正在尝试按照 AspectJ 编译的文档完成 freefairspectj gradle 插件的设置: https://docs.freefair.io/gradle-plugins/current/reference/ 我已经安装了
AspectJ:@Around 有效,但 @Before 中断 - 可能是什么导致了问题? [重复]
我正在 Spring Boot 应用程序中处理 AspectJ 方面,并且遇到了一个令我困惑的问题。具体来说,当我使用@Around建议时,一切似乎都按预期工作......
我们正在使用一个已在编译时与 AspectJ 1.9.6 一起编织的外部库。我们希望使用 Java 17,因此至少需要 AspectJ 1.9.8 来编译时编写我们自己的代码。期间...
AspectJ LTW + Spring Boot + 内置 Tomcat 非法访问:此 Web 应用程序实例已停止
我正在尝试在我们的Springboot应用程序中添加aspectJ LTW集成。我正在尝试使用 java 方式指定 TomcatInstrumenatbleClassLoader 和 TomcatLoadTimeWeaver 而不是 xml 方式。 参考...
Spring @Transactional 迁移到 Spring 5 后不起作用
我最近将应用程序从带有 AspectJ 1.8.10 的 Spring 4.3.x 和 JDK 8 升级到带有 Spring 5.3.x 和 AspectJ 1.9.20.1 的 JDK 17,并且事务注释似乎不起作用 在应用中...
spring-aop 由于无法创建后备 PointcutExpression 而无法工作
方面 包dim.aop; 导入 org.apache.log4j.Logger; 导入 org.aspectj.lang.JoinPoint; 导入 org.aspectj.lang.annotation.Aspect; 导入 org.aspectj.lang.annotation.Before; 导入组织。
Aspectj java.util.ArrayList 或 jdk 不工作
我正在学习AOP,阅读教程,并开始使用AspectJ。我的目标是“aspect”任何 jdk 文件,因此从最简单的示例 java.util.ArrayList 开始,也尝试了任何 jdk 文件,但是......
Javac + Lombok 阶段后如何使用 AspectJ Maven 进行二进制编织
我有一个项目,它使用已编译的方面并在编译时编织它们。我想添加Lombok,但不幸的是Lombok不支持AJC。由于该项目没有任何来源...
将 Spring bean 注入 AspectJ 并附加切入点
我有一个已经使用Spring AOP的Spring Boot项目。对于新功能,需要使用 cflow 切入点,因此必须集成 AspectJ。 我成功地能够编译时间...
Spring-Aspects 工件中的 aop.xml 文件是什么?
我为我的应用程序激活了aspectj加载时间编织,并添加了一个aop.xml文件来定义我的方面。 我发现我的类路径上的 spring-aspects jar 也包含 aop.xml 文件,并且是
我对 AspectJ 还不太熟悉,我一直在尝试修改一些用 Java 编写的游戏(Space Haven)。为了实现我想要的,我必须更改 int 变量。 这是代码片段: 私人空间
尝试将域服务注入实体并在调用它时获取NPE。 使用 Spring Boot 3+ 和 Gradle。我希望我不需要手动设置插件来启用方面。尝试过n...
将AspectJ 1.8.1升级到1.9.8并与Gradle 7 + Java 11集成无法找到Aspectjrt.jar
我正在将基于 Java 8 的 spring 代码库(gradle 项目)升级到 Java 11。 该项目确实包含 AOP 代码(https://en.wikipedia.org/wiki/Aspect-oriented_programming)并且它依赖于