1

是否可以创建一个 POJO bean 将/可以被 Spring 视为FactoryBean. 所以我想创建一个FactoryBean(有getObject、、、getTypeisSingleton)但不导入任何特定于 Spring 的类的类。因此它不会实施FactoryBean

仅供参考,使用 afactory-method不起作用,因为我需要在创建对象之前设置属性。

一个典型的例子是使用构建器,您可以在其中创建构建器、设置属性并调用构建方法来获取所需的最终 bean。

4

2 回答 2

2

工厂豆怎么样?例如:

<bean id="factory" class="package.Factory">
    <!-- configure properties here -->
</bean>
<bean id="instance" factory-bean="instans" factory-method="createInstance"/>

Spring 将创建 Factory 类的实例,对其进行配置并使用它的createInstance方法创建 id 为instans的 bean 。

于 2013-02-26T12:18:36.350 回答
1

If the builder has proper Java Beans compatible set methods for its properties then you can do it in two stages

<bean id="fooBuilder" class="com.example.FooBuilder">
  <property name="algorithm" value="simple" />
</bean>

<bean id="foo" factory-bean="fooBuilder" factory-method="build" />

But for something like a Guava CacheBuilder that uses fluent setters you're probably better off using Spring's JavaConfig approach for that part of the configuration instead of XML

@Configuration
public class AppConfig {
  public @Bean Cache<String, MyObject> cache() {
    return CacheBuilder.newBuilder()
      .maximumSize(1000)
      .softValues()
      .build(cacheLoader);
  }

  // defined elsewhere, maybe in XML
  private @Autowired CacheLoader<String, MyObject> cacheLoader;
}
于 2013-02-26T12:29:28.013 回答