Java 我可以在CommandLineRunner上使用Spring AOP吗

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

我有一个简单的spring boot项目

    <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");
    }
}