我的aspect类在启动时调用aspect。
但是在调用下面提到的API之后,模型设置器方法不是通过aspect
处理的@RestController
@AllArgsConstructor
@Slf4j
public class MyController {
@PostMapping("/terms")
public Mono<ResponseEntity<ModelResponse>> createCountryExceptionRule(@RequestBody ModelRequest model) {
model.setField1("test");
//some statements
}
}
@Data
class ModelRequest{
String field1;
String field2;
}
@Aspect
@Component
class MyAspect {
@Before("execution(public * *.set*(..))")
public void test(JoinPoint joinPoint) {
System.out.println("Before method:" + joinPoint.getSignature());
}
}
@SpringBootApplication
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
我添加的依赖项在
下面<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
如果我通过http请求
调用api,则不会调用aspect我在这里做错了什么,或者我错过了什么?
Spring AOP只在Spring Container托管bean上工作。来自文档:5.2。Spring AOP功能和目标
Spring AOP目前只支持方法执行连接点(建议在Spring bean上执行方法)
createCountryExceptionRule()
方法的ModelRequest
参数实例不是Spring bean(此处用@Component
注释ModelRequest
类无效)。