yuehoiwai 2020-06-29 17:51 采纳率: 0%
浏览 114
已采纳

如何在spring容器中銷毀bean

Listener_Thing_List_Editor_Button Listener_Refresh=Application_Context.getBean(Listener_Thing_List_Editor_Button.class);

.......

請問如何在不關閉容器的情形下銷毀某個bean(例如 Listener_Refresh) ?

謝謝兩位關注,不過也許沒有把問題說清楚,兩位的建議無法解決問題。

我試再把問題詳述如下:

上述的listener 放在一個 button 上,button放在splitpane上

以下是關閉splitpane的代碼:


  public Boolean Set_component_user_wants_to_cancel_all()
    {
        Boolean OK=true;
        if(Sure_to_cancel)
        {
                this.removeAll();           //"this"=splitpane
                Listener_Refresh=null;

        }
        else
        {
            ...........
            OK=false;
       }
       return OK;   
    }

以下是listener的代碼:

@org.springframework.stereotype.Component
@Scope("prototype")
public class Listener_Thing_List_Editor_Button implements ActionListener
{
    private Mirror_World_Dispatcher Mirror_World_Dispatcher=null;
    public Listener_Thing_List_Editor_Button()
    {

    }
    public void setMirror_World_Dispatcher(Mirror_World_Dispatcher Mirror_World_Dispatcher)
    {
        this.Mirror_World_Dispatcher=Mirror_World_Dispatcher;
    }
    public void actionPerformed(ActionEvent e) 
    {
        this.Mirror_World_Dispatcher.React_to_thing_list_editor_action_event(e,null);
    }
}

問題是,如果我重複 “關閉splitpane,打開splitpane,按button”過程 n次,actionPerformed則會被執行n次。

所以我懷疑執行上述Set_component_user_wants_to_cancel_all()后,Listener_Refresh實例依然存在。

  • 写回答

3条回答

  • 毕小宝 博客专家认证 2020-07-04 13:27
    关注

    BeanDefinitionRegistry beanDefinitionRegistry = (DefaultListableBeanFactory) configurableContext.getBeanFactory();
    Spring 提供了 Bean 工厂管理工具类,可以移除注册的 Bean ,方法是:

    beanDefinitionRegistry.removeBeanDefinition(beanId);
    

    这样可以讲对应的 Bean 移除容器的托管范围外。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 8月23日

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样