在我的
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会很奇怪.这正是07001的目的.所以改变你的MyEventHandler是这样的:
@Component
@RepositoryEventHandler
@DependsOn("myBean")
public class MyEventHandler {
@HandleBeforeCreate
public void beforeCreateInstance(Object instance) {
...
}
}