gpt4 book ai didi

java - Spring bean 在集合上设置销毁方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:28 26 4
gpt4 key购买 nike

我在配置类中将 Map 作为 bean,并且需要为所有 map 值提供 Spring destroy 方法:

@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 创建类。

最佳答案

如果你将你的 map 注入(inject)到每个 Producer 中,这是可能的。和Producer.close()将从 map 中删除给定的生产者。

但是新类(包含 map 实例和销毁方法)对我来说看起来是最好的解决方案。您的自定义类可能使用泛型,因此内部映射字段将为 Map<String, ? extends Closeable> 。您不需要为 Map<String, Something>, Map<String, SomethingElse> 单独提供类(class)等等

我会使用该类作为注册新生产者的唯一方法。 Map 类有更多您真正需要的方法。例如,它支持删除键而不调用 close关于该键的值。使用自定义类将能够正确执行业务规则“已关闭的生产者将从注册映射中删除”

关于java - Spring bean 在集合上设置销毁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956477/

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