Spring 引导方面在我的 API 中不起作用
Spring Boot aspect doesn't work in my API
我正在尝试为我的 Spring 启动 API 创建一个日志记录方面,以便每次向服务器发出请求时,所有内容都会记录到一个文件中。但是我无法调用我的方面。我做错了什么?
看点在这里
@Aspect
@Component
public class Logging {
private Logger log;
@Before("execution(* com.package.TeamController.*(..))")
public void before(JoinPoint joinPoint){
log = Logger.getLogger(joinPoint.getClass());
log.info("Starting request " + joinPoint.getSourceLocation());
if(joinPoint.getArgs()!=null){
log.info(" Arguments are");
for(Object obj : joinPoint.getArgs()){
log.info(obj.getClass().getName() );
}
}
}
}
应用程序入口点是
@SpringBootApplication(scanBasePackages =
{"com.package", "com.aspect"})
@EnableJpaRepositories
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我的 application.properties 文件有这一行
spring.aop.auto=true
我做错了什么?为什么调用 TeamController 中的方法时方面不记录信息?
注意 团队控制器方法是通过GET请求调用的
NOTE2 Intelij Ide 有一个可视化工具,用于导航到建议的方法,当我查找它时,它向我展示了控制器方法,但是建议仍然无法正常工作
找到问题了。第一次创建文件时,Intelij 建议制作一个方面而不是 java class,这使得文件 Logging.aj 并创建了
public aspect Logging{}
当我将 aspect 关键字重命名为 class 关键字时,文件仍然是 .aj 类型。我将其重命名为 .java,现在可以正常使用了。
我正在尝试为我的 Spring 启动 API 创建一个日志记录方面,以便每次向服务器发出请求时,所有内容都会记录到一个文件中。但是我无法调用我的方面。我做错了什么?
看点在这里
@Aspect
@Component
public class Logging {
private Logger log;
@Before("execution(* com.package.TeamController.*(..))")
public void before(JoinPoint joinPoint){
log = Logger.getLogger(joinPoint.getClass());
log.info("Starting request " + joinPoint.getSourceLocation());
if(joinPoint.getArgs()!=null){
log.info(" Arguments are");
for(Object obj : joinPoint.getArgs()){
log.info(obj.getClass().getName() );
}
}
}
}
应用程序入口点是
@SpringBootApplication(scanBasePackages =
{"com.package", "com.aspect"})
@EnableJpaRepositories
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我的 application.properties 文件有这一行
spring.aop.auto=true
我做错了什么?为什么调用 TeamController 中的方法时方面不记录信息?
注意 团队控制器方法是通过GET请求调用的
NOTE2 Intelij Ide 有一个可视化工具,用于导航到建议的方法,当我查找它时,它向我展示了控制器方法,但是建议仍然无法正常工作
找到问题了。第一次创建文件时,Intelij 建议制作一个方面而不是 java class,这使得文件 Logging.aj 并创建了
public aspect Logging{}
当我将 aspect 关键字重命名为 class 关键字时,文件仍然是 .aj 类型。我将其重命名为 .java,现在可以正常使用了。