2

我在这里读到使用被认为是 applicationContext.getBean("somebeananmehere") 是不好的。

如果是这样,我将如何以编程方式获取豆子(取决于用户他想要什么样的豆子,假设他可以选择不同的杂货项目,例如苹果、肥皂、洗涤剂)?

比方说

switch(num){
  case 1 : myGrocery  = (GroceryItem) applicationContext.getBean("SOAP");break;
  case 2: myGrocery = (GroceryItem) applicationContext.getBean("APPLE");break;
  default:
   //more code here
}

这就是我在用户选择他或她的杂货的应用程序中所做的。(这是一个控制台应用程序)

如果 applicationContext.getBean 被认为是不好的,那么还有什么替代方法?

4

3 回答 3

1

您正在寻找查找方法注入

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-method-injection

于 2013-02-20T10:40:51.620 回答
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
    }
 }

}
于 2013-02-20T05:08:44.183 回答
0

您可以使用弹簧的factory-method选项。只需编写您的工厂方法以返回正确的类并在您的 xml bean 中:

<bean factory-method="your factory method name" class="your class" /> 
于 2013-02-20T05:19:55.783 回答