当前位置: 首页 > 知识库问答 >
问题:

从父应用程序运行并关闭子上下文

司健柏
2023-03-14

我使用spring application builder从父应用程序运行子上下文应用程序(spring Cloud task)。我还将运行的父上下文传递给子应用程序的构建器——它定义了DataSource bean,我希望它也能被task使用。

我的问题是,当关闭子上下文时,所有父bean也会被销毁。我做错什么了吗?

如何将父上下文中的bean与子上下文共享,并且在子上下文退出时仍然保持它们的活动。

@Component
public class ClassInParentContext{

 @Autowired
 private ConfigurableApplicationContext parentAppCtx;

 @Autowired
 private DataSource ds; //this bean is defined in parent context and I want it to be passed to child but not to be disposed when the child context closes.

 public void onSomeEventInParentContext(){
    new SpringApplicationBuilder(com.app.child.Child.class)
            .parent(parentAppCtx)  
            .run(args); //this context is autoclosed by spring cloud task 
 }
}

@EnableTask
public class Child{
}

谢谢

共有1个答案

邹英光
2023-03-14

在与spring cloud task交谈后,团队发现,当任务结束时,父上下文隐式地、强制地和有意地关闭。

 类似资料:
  • 我有一个使用子/父上下文关系的Spring应用程序。这样做的原因是为了确保子上下文从父上下文继承bean/资源,然后根据需要添加更多bean/资源来覆盖它们。但是,当子上下文关闭时(退出try/catch作用域),它开始对它引用的所有bean进行清理,包括父作用域中的bean。这是不可取的,因为我需要重用父上下文来创建另一个子上下文,但是现在它是垃圾,因为它包含了一堆已处理/关闭的bean。 问题

  • 我在父域(我无法控制)的路径中设置了一个cookie。但我在其中一个子域中运行了一个应用程序(我可以访问它)。如何访问针对父域设置的cookie? 例如,假设我有饼干: 应用程序正在foo上运行。酒吧实例com和cookie设置为。实例这是一个Java应用程序。我试图调试,但我只能看到为子域设置的cookie,而不是主域。 这是消息来源 此外,根据这个stackoverflow答案,也许浏览器没有

  • 我怎么能做到..以编程方式有什么方法可以做到这一点。 Pls救命!

  • 我有一个关于Spring的ApplicationListener在父上下文和子上下文方面的性质的问题。假设您创建了一个父上下文,它创建了一个bean,该bean是一个单例,并注册为ApplicationListener。然后,使用父上下文创建子上下文。关闭子上下文时,Spring将发送ContextClosedEvent。该事件是否也会传播到父上下文,从而导致作为ApplicationListen

  • 我有问题关闭我的javaFX应用程序,当我点击关闭按钮从我的阶段,我的应用程序消失,但如果我寻找它在我的任务管理器我的应用程序仍然没有关闭。我尝试使用下面的代码强制关闭主线程和所有子线程,但是问题仍然存在。

  • 注:编译脚本需要在本地搭建服务器环境,你也可以放到自己的网站上,然后更改下载服务器的地址(脚本第30行)即可。 引用 RandomRead.nsi 的内容: OutFile "RandomPage.EXE" Name "RandomPage" !include "MUI2.nsh" SetFont "tahoma" 8 Var NoNetwork Var ID1 Var ID2 Var ID3