java – 如何在@HandleBeforeCreate处理程序之前在请求作用域上调用@PostConstruct?

在我的
Spring应用程序中,我有一个请求范围的bean:

@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyBean {

    @PostConstruct
    public void init() {
       ...
    }

我还有一个MongoDB事件处理程序:

@Component
@RepositoryEventHandler
public class MyEventHandler {

    @HandleBeforeCreate
    public void beforeCreateInstance(Object instance) {
        ...
    }
 }

当我调用Spring Data REST端点来保存我的资源时,首先调用@HandleBeforeCreate,然后调用@PostConstruct.

如何更改此调用的顺序?我想在MongoDB事件处理程序启动之前在MyBean上调用@PostConstruct?

最佳答案 因为如果MyEventHandler引用MyBean,MyBean应该被初始化,包括任何PostConstruct处理.

当然,依赖于你不使用的bean会很奇怪.这正是070​​01的目的.所以改变你的MyEventHandler是这样的:

@Component
@RepositoryEventHandler
@DependsOn("myBean")
public class MyEventHandler {

    @HandleBeforeCreate
    public void beforeCreateInstance(Object instance) {
         ...
    }
}
点赞