Java 我可以在CommandLineRunner上使用Spring AOP吗
我有一个简单的spring boot项目Java 我可以在CommandLineRunner上使用Spring AOP吗,java,spring,Java,Spring,我有一个简单的spring boot项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> <relativeP
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
我正在尝试使用SpringAOP,我有这个方面类
@Aspect
@Component
public class BatchAspect {
@Before(value = "execution(* com.example.demo.Test.*(..))")
public void beforeAdvice(JoinPoint joinPoint) {
System.out.println("Before method:" + joinPoint.getSignature());
}
@After(value = "execution(* com.example.demo.Test.*(..))")
public void afterAdvice(JoinPoint joinPoint) {
System.out.println("After method:" + joinPoint.getSignature());
}
}
还有这个命令行程序
package com.example.demo;
@Component
public class AopCommandLineRunner implements CommandLineRunner {
@Autowired
private Test test;
@Override
public void run(String... args) throws Exception {
test.test();
}
}
还有考试班
package com.example.demo;
@Component
public class Test {
public void test() {
System.out.println("RUN");
}
}
当应用程序运行时,永远不会调用beforeAdvice和afterAdvice方法
我错过了什么?他们应该是因为什么?切入点与任何内容都不匹配。请将包声明添加到您的类和fulll
CommandLineRunner
(是否为内联类、顶级calss等)。问题已更新请确认是否自动检测到特性。一定要共享BatchApplication
和BatchAspect
的包,而且更新不够,您遗漏了aspect和application类上的重要包声明(这些是我感兴趣的)。
package com.example.demo;
@Component
public class Test {
public void test() {
System.out.println("RUN");
}
}