首页 > 解决方案 > 使用 Spring ServiceFactoryBean 获取具有所有依赖项的 bean

问题描述

我有自定义工厂类来使用 Spring 的服务工厂 bean 获取 bean。但是,我想从这个工厂 bean 中获取的 bean 具有嵌套的 bean 依赖项。我的问题是如何从这个工厂获取一个满足所有嵌套依赖项的 bean?

Spring Config : 

<bean id="beanFactory" 
    class="org.springframework.beans.factory.config.ServiceLocatorFactoryBean">
  <property name="serviceLocatorInterface" value="com.example.MyBeanFactory">
</bean>


Public class MyBean
    {
       JobBuilder builder;
    }




Public interface MyBeanFactory
    {
      MyBean getMyBean();
    }

现在,当我这样做时MyBeanFactory.getMyBean()……我希望在其中包含包含JobBuilde实例的 MyBean 实例。

标签: springfactory

解决方案


您可以将实现类视为 Spring 应用程序中的任何其他类 - 只需自动装配您需要的任何依赖项。我的一个建议是为 bean 类定义一个接口。例子:

public interface MyBean {

  void doStuff();
}

提供一个实现:

@Component("defaultMyBean")
public class DefaultMyBean {

  @Autowire
  JobBuilder jobBuilder;

  public void doStuff() {
   // do stuff with jobBuilder
  }
}

然后是工厂界面:

public interface MyBeanFactory {

  MyBean getMyBean();
}

配置保持不变。


推荐阅读