Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有任何Spring导入的Spring FactoryBean_Java_Spring - Fatal编程技术网

Java 没有任何Spring导入的Spring FactoryBean

Java 没有任何Spring导入的Spring FactoryBean,java,spring,Java,Spring,是否可以创建一个pojobean,它将/可以被Spring视为FactoryBean。因此,我想创建一个类,它是一个FactoryBean(具有getObject,getType,isSingleton,等等),但不导入任何Spring特定的类。因此,它不会实现FactoryBean 仅供参考,使用工厂方法将不起作用,因为我需要在创建对象之前设置属性 一个典型的例子是使用构建器,在其中创建构建器、设置属性并调用构建方法以获得所需的最终bean。工厂bean如何?例如: <bean id="

是否可以创建一个pojobean,它将/可以被Spring视为
FactoryBean
。因此,我想创建一个类,它是一个
FactoryBean
(具有
getObject
getType
isSingleton
,等等),但不导入任何Spring特定的类。因此,它不会实现
FactoryBean

仅供参考,使用
工厂方法
将不起作用,因为我需要在创建对象之前设置属性

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

工厂bean如何?例如:

<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。

如果构建器为其属性设置了合适的Java Beans兼容
方法,那么您可以分两个阶段来做

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

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

但是对于像使用fluent setters的东西,您最好在配置的这一部分使用Spring,而不是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;
}
@配置
公共类AppConfig{
public@Bean缓存(){
返回CacheBuilder.newBuilder()
.最大尺寸(1000)
.softValues()
.build(cacheLoader);
}
//在别处定义,可能是XML
private@Autowired CacheLoader CacheLoader;
}