Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bean-Spring的动态初始化 我很难找到一个好的解决方案来创建必须延迟初始化的bean。 我的情况是,我必须推迟创建bean,这样我的微服务才能启动,并在启动完成后创建它们——对于好奇的bean,我使用vertX verticle作为微服务。_Java_Spring_Dependency Injection_Microservices - Fatal编程技术网

Java Bean-Spring的动态初始化 我很难找到一个好的解决方案来创建必须延迟初始化的bean。 我的情况是,我必须推迟创建bean,这样我的微服务才能启动,并在启动完成后创建它们——对于好奇的bean,我使用vertX verticle作为微服务。

Java Bean-Spring的动态初始化 我很难找到一个好的解决方案来创建必须延迟初始化的bean。 我的情况是,我必须推迟创建bean,这样我的微服务才能启动,并在启动完成后创建它们——对于好奇的bean,我使用vertX verticle作为微服务。,java,spring,dependency-injection,microservices,Java,Spring,Dependency Injection,Microservices,到目前为止,我通过@Lazy注释与启动相关的bean,并在成功启动后使用getBean方法调用它们来解决这个问题 e、 g.-将eventBus作为参数传递,该参数只能在成功启动microservice后创建,因为它是这个bean所需要的 (crudepository)ctx.getBean(“installationcrudepository”,eventBus) 我还必须延迟所有依赖于懒惰bean的bean的初始化,方法是用@lazy注释它们,然后用getBean调用它们,这不是一个好看的解

到目前为止,我通过@Lazy注释与启动相关的bean,并在成功启动后使用getBean方法调用它们来解决这个问题

e、 g.-将eventBus作为参数传递,该参数只能在成功启动microservice后创建,因为它是这个bean所需要的

(crudepository)ctx.getBean(“installationcrudepository”,eventBus)

我还必须延迟所有依赖于懒惰bean的bean的初始化,方法是用@lazy注释它们,然后用getBean调用它们,这不是一个好看的解决方案。 这种方法是可行的,但它肯定不是一个好的设计,intellIj也不喜欢它

我找不到这个问题的解决方案,也许有一种方法可以手动创建一个Bean,并在提供Bean后使其他Bean初始化

致以最良好的祝愿,
Michael

为什么您的bean依赖于运行的微设备?您的微服务应该有一个事件,当它准备就绪时触发该事件,这样您就可以侦听和执行启动后逻辑。@cdalxndr就是这样。在微服务启动后,我有一个启动后逻辑——只有当我能够获得用于与其他微服务通信的实时vertx实例或事件总线时。我的bean需要它们。我想这是一个设计问题。我不知道Vertx,但我想,如果您创建一个Vertx服务bean,它将包含microservice启动后可用的所有依赖项,那么在Vertx就绪事件中,您调用Vertx服务上的某个init方法,它将填充所有必需的依赖项。当然,在Vertx触发就绪事件并初始化服务之前,VertxService应该会使任何客户端请求(公共方法)失败,或者您可以返回一些在初始化后将完成的未来对象。Vertx没有一些手动初始化方法吗?您可以在Vertx服务bean初始化中调用它来设置所有Vertx依赖项,并使用Vertx服务作为所有Vertx相关操作的入口点。启动成功后,
@Override public void init(Vertx-Vertx,Context-Context){}
方法被调用,在这里我得到了所有需要的依赖项-在Vertx中,实例就是我所需要的。我无法手动初始化它,因为我需要vertx的同一个实例来与其他微服务通信。问题是,我能否以某种方式将其传递给@Configuration类?