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