gpt4 book ai didi

java - 如何将同一个bean实例注入(inject)到多个bean中

转载 作者:行者123 更新时间:2023-12-01 22:47:18 25 4
gpt4 key购买 nike

我有一个有趣的问题,希望你能帮助我解决:

我有一个名为 AContainer 的 bean。它包含两个 bean:PartAPartBPartAPartB 需要共享一个 bean,我将其称为 PartX

我的应用程序将创建多个 AContainer,每个都有自己的 PartAPartB 实现。但是,每个 PartAPartB 对都需要共享一个 PartX

正如我所见,如果我将 PartX 设置为单例,则每个 PartA/PartB 对将共享相同的 PartX (因此我可以不要那样做)。但是,如果我将它们制作为原型(prototype),PartAPartB 将获得它们自己的单独的 PartX 实例。是否有第三个选项可以让我使用 Spring 进行设置?

最佳答案

据我所知 Spring 无法为您处理自定义范围注入(inject)。您需要为 AContainer 中的 PartAPartB 手动注入(inject) PartX 实例。一种方法是在 AContainer@PostConstruct 中获取 PartX(原型(prototype)范围)的单个实例,然后将该实例注入(inject) >A 部分B 部分:

@Component
@Scope("prototype")
public class AContainer {

@Autowired
private PartA partA;
@Autowired
private PartB partB;
@Autowired
private BeanFactory beanFactory;

@PostConstruct
public void init() {
PartX partX = beanFactory.getBean("partX"); //name assumed
partA.setPartX(partX);
partB.setPartX(partX);
}
//rest of your code...
}

关于java - 如何将同一个bean实例注入(inject)到多个bean中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148716/

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