gpt4 book ai didi

java - Spring AOP 在 Spring Boot 2.1.6 应用程序中没有被调用

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:20 24 4
gpt4 key购买 nike

在谷歌上关注了有关此主题的大量搜索结果后,我的 Aspect 仍然无法在我的 Spring Boot 应用程序上运行

我使用的是spring boot 2.1.6版本,它似乎已经有spring aop,aspectjweaver和aspectjrt(待更正)。我创建了一个注释、方面组件,并在目标类上使用我的注释,但没有成功。

这是我的注释类

    import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Retention(RUNTIME)
@Target({TYPE, METHOD})
public @interface AopAudit {
}

我的方面类

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class AuditAnnotationAspect {
@Before("execution(* com.rainestech.hrm.modules.settings.entity.ABC.set*(..))")
public void before(JoinPoint joinPoint) {
System.out.println("Audit Works!!! = ");
}
}

ABC 类

@Entity
@AopAudit
public class ABC {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@NotEmpty
@NotNull
@Column
private String name;

//... getters and setters
}

配置类

@Configuration
@EnableWebSecurity
@EnableAspectJAutoProxy
public class WebSecurity extends WebSecurityConfigurerAdapter {

}

运行应用程序并在 ABC 类上运行 set 方法不会产生任何效果,而我希望在控制台中看到 Audit Works

最佳答案

首先,确保您的 pom.xml 包含所有这些:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

其次,使用@EnableAspectJAutoProxy注释您的配置,这将启用它。

第三,确保更新切入点:

@Pointcut("@annotation(com.path.to.your.annotation.AopAudit)")
private void auditable() {}

然后在您的@Before中使用它。

@Before("auditable()")

另一个需要注意的重要事情是,您不能执行位于同一类上的方法切入点。更多信息here .

关于java - Spring AOP 在 Spring Boot 2.1.6 应用程序中没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57776098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com