gpt4 book ai didi

java - 使用 BeanFactory.getBean() 创建 spring bean

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

考虑有 2 个类:当使用factory.getbean()创建bean A时,bean被创建,但属性coldata为null,尽管初始化为新的hashmap。

@Component
@Scope("prototype")
public class A{
private Map<String, Map<String,String>> coldata = new HashMap<String, Map<String,String>>();
}

@Service
public class B{
@Autowired
private BeanFactory factory;

public void test(){
A a= (A)factory.getBean("A");
System.out.println(a.coldata)
}
}

最佳答案

一开始就有错误的方法来纠正。

首先,正如 @Sun 所说:更正代码并将该映射设为公开,或者至少为该字段提供一个 getter。

其次如果您使用 Autowiring ,请不要使用 beanFactory:A 类被注释为 Autowired 和 Component。如果您想从容器中获得该类的实例,只需在类 B 中使用 Autowiring 的实例即可:

@Service
public class B{
@Autowired
private A a;

public void test(){
System.out.println(a.coldata)
}
}

避免使用 BeanFactory/ApplicationContext 类的 getBean 方法,特别是如果您想使用 Autowiring 。以下是关于为什么应该避免使用该方法的一个很好的解释: Why is Spring's ApplicationContext.getBean considered bad?

关于java - 使用 BeanFactory.getBean() 创建 spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839003/

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