我正在将一些基于Xml的
spring配置转移到基于
Java的过程.
以前,我有意识地混合了Xml< bean class ='foo'/>具体情况下使用@Component映射声明,作为记录非显而易见的bean的一种方法.
一个典型的用例是如果我声明将修改spring本身行为的bean,我将明确声明这些,而不是让它们被发现,纯粹是为了提高配置文件的清晰度.
但是,这些豆通常需要一定程度的@Autowiring.如果我在Java配置中自己创建bean,我将负责执行这种连接 – 这是毫无意义的.
是否有一个纯Java配置选项明确地向Spring提供一个类,让它管理实例化?
即:
鉴于课程:
public class MyFunkySpringBean implements InitializingBean {
@Autowired Foo foo;
}
在XML配置中,这将被简单地声明为:
Java语法中是否存在等价物,我可以将bean显式声明为Spring,但不负责提供实际的实例 – 将其留给Spring.
例如:
@Configuration
public class MyAppConfig {
// Explictly provide the class, not the instance to Spring
@Bean
public MyFunkySpringBean funkyBean; // No instance -- it's up to Spring to build
}
要清楚,我不想这样做:
@Configuration
public class MyAppConfig {
@Bean
public MyFunkySpringBean funkyBean() {
MyFunkySpringBean bean = new MyFunkySpringBean();
bean.foo = new Foo();
// other dependencies go here
return bean;
}
}
这样的设施是否存在于Spring中?