基于注释的工厂方法
我希望能够自动assembly单个bean( foo
)
@Component public class FooUser { @Autowire Foo foo; }
由另一个单例的方法创建( FooFactory.createFoo
)
@Service public class FooFactory { public Foo createFoo() {...} }
使用xml它只是factory-method
。 我怎么能用注释做到这一点?
请尝试使用Java @Configuration
:
@Configuration public class Config { @Bean public FooUser fooUser() { return new FooUser(foo()); } @Bean public FooFactory fooFactory() { return new FooFactory(); } @Bean public Foo foo() { return fooFactory().createFoo(); } }
你需要java-config – @Bean
注释 。
将您的类定义为@Configuration
,将您的方法定义为@Bean
Spring Components也可以定义工厂方法。 从文档中删除:
@Component public class FactoryMethodComponent { @Bean @Qualifier("public") public TestBean publicInstance() { return new TestBean("publicInstance"); } public void doWork() { // Component method implementation omitted } }
使用FactoryBean Spring接口。 那么你将能够自动使用T
编辑:BeanFactory是Spring中的一个接口,如果你实现它你可以创建一个对象的工厂,如:
public class FooFactoryBean implements FactoryBean{ .................. }
那么你可以初始化bean:
@Bean public FooFactoryBean foo(){ return new FooFactoryBean(); }
然后,如果你自动assemblyFoo它Spring会理解FooFactoryBean是所需的工厂
@Autowired Foo foo;