我已阅读here使用被认为是applicationContext.getBean(“somebeananmehere”)的内容很糟糕。
如果是这样,我将如何以编程方式获取bean(取决于用户他想要什么样的bean,让我们说他可以选择不同的杂货项目,例如苹果,肥皂,洗涤剂)?
让我们说
switch(num){
case 1 : myGrocery = (GroceryItem) applicationContext.getBean("SOAP");break;
case 2: myGrocery = (GroceryItem) applicationContext.getBean("APPLE");break;
default:
//more code here
}
这就是我在我的应用程序中所做的,用户正在选择他或她的杂货。 (这是一个控制台应用程序)
如果applicationContext.getBean被认为是坏的,那么替代方案是什么?
答案 0 :(得分:1)
您正在寻找查找方法注入。
答案 1 :(得分:0)
检查
class Example {
private SOAP soap;
@Autowired
public void setSoap(SOAP soap) {
this.soap= soap;
}
private APPLE apple;
@Autowired
public void setApple(APPLE apple) {
this.apple= apple;
}
public void yourMethod(int num) {
switch(num){
case 1 : myGrocery = (GroceryItem) soap;break;
case 2: myGrocery = (GroceryItem) apple;break;
default:
//more code here
}
}
}
答案 2 :(得分:0)
您可以使用spring的factory-method
选项。只需编写工厂方法以返回正确的类和xml bean:
<bean factory-method="your factory method name" class="your class" />