如何获取由FactoryBean spring管理创建的bean?

6 浏览
0 Comments

如何获取由FactoryBean spring管理创建的bean?

FactoryBean可以用于以编程方式创建可能需要复杂实例化逻辑的对象。然而,由FactoryBean创建的bean似乎不会成为Spring管理的。这个解释正确吗?如果是这样,有没有什么好的解决办法?下面的代码示例说明了我的问题。

应用程序上下文:

 
 

工厂实现:

public class SearcherFactory implements FactoryBean {
    @Override
    public Searcher getObject() throws Exception {
        return new Searcher(); // 其实并不复杂 ;)
    }
    @Override
    public Class getObjectType() {
        return Searcher.class;
    }
    .... 
}

工厂创建的类:

public class Searcher() {
      private Service service;
      @Autowired
      public void setService(Service service) {
           // 从未调用
           this.service=service;
      } 
}

0