gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:46 24 4
gpt4 key购买 nike

在我的 Spring 应用程序中,我有一个具有 request 作用域的 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

最佳答案

作为explained in this answer, scoped beans get only initialized when the get referenced .因此,如果 MyEventHandler 引用了一个 MyBean,则 MyBean 应该被初始化,包括任何 PostConstruct 处理。

当然,依赖一个您随后不使用的 bean 会很奇怪。这正是 @DependsOn 的目的.因此,像这样更改您的 MyEventHandler:

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

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

关于java - 如何在@HandleBeforeCreate 处理程序之前对请求作用域bean 调用@PostConstruct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414545/

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