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

一种Spring bean集合销毁方法

潘自强
2023-03-14
@Configuration
public class ProducerConfiguration  {
    @Bean("producers")
    public Map<String, Producer> producers() { ... }
}

上面的bean看起来像一个集合的原因是基于外部配置文件动态地创建生产者。对于没有集合的bean,可以通过@bean注释上的destroyMethod属性轻松完成:

@Bean(destroyMethod = "close")
public Producer producer() { ... }

是否可以在集合bean上提供destroy方法?作为一种变通方法,我可以创建一个单独的类,它只包装一个集合并有一个close方法,但我不想为每个集合bean创建类。

共有1个答案

劳彦
2023-03-14

如果将映射注入到每个生产者中,那么producer.close()将从映射中删除给定的生产者,这是可能的。

但是新的类(包含map实例和destroy方法)在我看来是最好的解决方案。您的自定义类可以使用泛型,因此内部映射字段将是map 。对于map ,map 等,不需要单独的类

我会使用这个类作为注册新制作人的唯一途径。Map类有更多您真正需要的方法。例如,它支持删除键,而不对该键的值调用close。与自定义类将能够正确地执行业务规则‘生产者关闭是从注册地图删除’

 类似资料:
  • 使用Backbone.js作为Rails应用的前端框架。就Rails模型而言,我有一个发布模型和一个文章模型。每个出版物与许多文章相关联,并且每个文章只属于一个出版物。当用户决定删除一个出版物时,我希望所有相关的文章也被删除。我说的删除是指从数据库中删除。 以下代码适用于从数据库中删除指定的发布,但不适用于删除关联的项目: 我还试着移动这些文章。destroy()行在success函数中,但这也不

  • 本文描述了如何销毁 Kubernetes 集群上的 TiDB 集群。 销毁使用 TidbCluster 管理的 TiDB 集群 要销毁使用 TidbCluster 管理的 TiDB 集群,执行以下命令: kubectl delete tc ${cluster_name} -n ${namespace} 如果集群中通过 TidbMonitor 部署了监控,要删除监控组件,可以执行以下命令: kube

  • 销毁 Destroy 在不需要使用iScoll的时候调用iScroll实例的公共方法destroy()可以释放一些内存。 myScroll.destroy(); myScroll = null;

  • 问题内容: 我已经在bean的“销毁方法”中放入了sysout语句。当我运行示例代码时,sysout没有得到输出。这是否意味着销毁方法未得到调用? 测试类别: The Bean 配置文件: 问题答案: 你的示例不起作用,因为你没有关闭appcontext,只是让程序终止。 调用上下文,你将看到被调用的bean destroy-method。

  • 问题内容: 我正在使用Cookies模块来设置cookie。这是我的代码: 但是在文档中,我还没有找到如何 销毁 该Cookie的方法。 任何建议,将不胜感激。 问题答案: 无法根据HTTP规范删除cookie。为了有效地“删除” cookie,您可以将过期日期设置为过去的某个日期。本质上,这将为您带来以下收益(根据Cookies模块文档): 或根据HTTP规范: 两者都应该起作用。您可以替换与一

  • 本文向大家介绍Java中对象的销毁方法分析,包括了Java中对象的销毁方法分析的使用技巧和注意事项,需要的朋友参考一下 本文较为详细的分析了Java中对象的销毁方法。分享给大家供大家参考。具体分析如下: Java中的基本数据类型变量和对象的名称引用变量如定义在方法中,都为局部变量。但对象本身不一定是局部生命周期。如函数外存在其他对该对象的引用变量,则该对象的生命周期延伸至该其他引用变量所在的块。