gpt4 book ai didi

java - 使用切面时未调用 Spring Boot RestController 的构造函数

转载 作者:行者123 更新时间:2023-12-02 02:29:18 26 4
gpt4 key购买 nike

我是 AOP 新手,目前正在尝试为使用自定义注释进行注释的 Controller 方法实现一个方面。当调用 myFunction 时,我总是在 repository 上得到 NullPointerException 。看来我有两个 Controller 实例。其中之一是在不 Autowiring 存储库的情况下实例化的。当我删除 @MyAnnotation 时,一切都会按预期工作。

你能给我一些关于如何强制 Spring/AspectJ 使用我的构造函数的提示吗?

我的 Controller 看起来像:

@RestController
@RequestMapping(value = "/api")
public class MyController {
private Repository repository;

public MyController(Repository repository) {
this.repository = repository;
}

@RequestMapping(value = "/{variable1}", method = GET)
@MyAnnotation
public final FeatureCollection myFunction(
final @PathVariable(required = true) long variable1
) {
repository.findById(variable1);
(...)
}
}

方面:

@Aspect
public class MyAspect {
@Around("@annotation(MyAnnotation)")
public Object any(ProceedingJoinPoint pjp) throws Throwable {
return pjp.proceed();
}
}

配置:

@Configuration
@EnableAspectJAutoProxy
public class WebConfig {
@Bean
public MyAspect myAspect() {
return new MyAspect();
}
}

最佳答案

尝试使用@Autowired注释构造函数

@Autowired
public MyController(Repository repository) {
this.repository = repository;
}

关于java - 使用切面时未调用 Spring Boot RestController 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com