Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 方法级自定义注释不';t工作弹簧靴_Spring Boot_Spring Aop - Fatal编程技术网

Spring boot 方法级自定义注释不';t工作弹簧靴

Spring boot 方法级自定义注释不';t工作弹簧靴,spring-boot,spring-aop,Spring Boot,Spring Aop,我试图定义自定义注释(LogMe),该注释应该在用注释修饰的方法之前和之后运行。 该注释对于spring标识的方法(使用@GetMapping等定义的方法)很有效。但是,我自定义编写的方法上的注释不会调用AOP 我对注释的定义如下: import java.lang.annotation.ElementType; 导入java.lang.annotation.Retention; 导入java.lang.annotation.RetentionPolicy; 导入java.lang.annota

我试图定义自定义注释(LogMe),该注释应该在用注释修饰的方法之前和之后运行。 该注释对于spring标识的方法(使用@GetMapping等定义的方法)很有效。但是,我自定义编写的方法上的注释不会调用AOP

我对注释的定义如下:

import java.lang.annotation.ElementType;
导入java.lang.annotation.Retention;
导入java.lang.annotation.RetentionPolicy;
导入java.lang.annotation.Target;
@目标(ElementType.METHOD)
@保留(RetentionPolicy.RUNTIME)
公共@接口日志{
我的样子是这样的:

@配置
@促性腺激素
@面貌
公共类LogMeAspect{
@切入点(“@annotation(com.api.logging.aspect.LogMe)”)
public void loggableMethods(){}
@环绕(“loggableMethods()”)
公共对象服务ResponseTimeAdvice(ProceedingJoinPoint joinPoint)抛出可丢弃{
System.out.println(“>>>>>>>>到达PJP:“+joinPoint.getSignature().getName());
Object obj=连接点。继续();
返回obj;
}
}
工厂的定义如下(我试图从依赖项访问此方面)

org.springframework.boot.autoconfigure.enableautoconfigure=\
com.api.logging.aspect.LoggingAspect\
com.api.logging.aspect.LogMeAspect
注释的用法:

公共类Utils{
@洛格姆
公共字符串测试(int i、int j、String str){
System.out.println(“测试中”);
测试2();
返回i+j+str;
}
@洛格姆
公开无效测试2(){
System.out.println(“测试2”);
}
我的方面模块具有以下依赖项


org.springframework.boot
弹簧启动机aop
2.4.5
org.springframework.boot
SpringBootStarterWeb
2.4.5
org.projectlombok
龙目
真的
1.18.20
org.aspectj
aspectjtools
1.9.6
ch.qos.logback.contrib
logback json经典
${logback.contrib.version}
ch.qos.logback.contrib
logback jackson
${logback.contrib.version}
com.fasterxml.jackson.core
杰克逊数据绑定
2.12.3
com.fasterxml.jackson.core
杰克逊注释
2.12.3
com.fasterxml.jackson.core
杰克逊核心
2.12.3
org.aspectj
aspectjweaver
1.8.13
编译
org.aspectj
aspectjrt
1.7.4
回写
回归经典
${logback.version}
net.logstash.logback
logstash logback编码器
6.4
对于调用方面的模块,我有以下依赖项。当然,其中之一是方面依赖项—spring引导api日志记录


org.springframework.boot
弹簧靴起动器
org.springframework.boot
SpringBootStarterWeb
org.projectlombok
龙目
真的
org.springframework.boot
弹簧起动试验
测试
org.postgresql
postgresql
运行时
org.springframework.boot
spring引导启动器数据jpa
org.api.commons.logging
springbootapi日志记录
0.0.1-快照

AOP是基于代理的,只适用于对象的方法调用,而不适用于内部方法。此外,由于它是基于代理的,因此它只适用于spring托管的实例,因此如果使用
new Util()
并期望它能工作它不会工作,因为它不是由Spring管理的。您好@M.Deinum,谢谢您的回复。如果AOP不是一个选项,您能告诉我实现我的要求的最有效的方法是什么吗?您可以使用AOP,但您必须求助于全面的Aspectj,加载或编译时编织。如果您抛出Aspect在POM中使用J库时,您还应该首先了解哪个库有什么用途。也许您可以决定要使用哪个版本。目前,您使用的是运行时1.7.4、weaver 1.8.13和工具1.9.6这不是一个好策略。此外,因为weaver是运行时的超集,而tools是weaver的超集,所以在类路径上有相同类文件的不同版本。这让我想起了玩俄罗斯轮盘赌……或者你可以将
Utils
变成一个bean