在以下Spring Java Config中:
@Configuration
@EnableAutoConfiguration
@ComponentScan("my.package")
public class Config {
@Bean
public BasicBean basicBean1() {
return new BasicBean("1");
}
@Bean
public BasicBean basicBean2() {
return new BasicBean("2");
}
@Bean
public ComplexBean complexBeanByParameters(List<BasicBean> basicBeans) {
return new ComplexBean(basicBeans);
}
@Bean
public ComplexBean complexBeanByReferences() {
return new ComplexBean(Arrays.asList(basicBean1(), basicBean2()));
}
}
我可以创建两个
ComplexBean
s使用任意一个参数注入,这很优雅,但如果有几个其他bean
BasicBean
类型,只需要几个(参数当然可以是类型
碱性大豆
并列举出我感兴趣的bean的名称,但这可能是一个很长的列表,至少是为了参数)。如果我想直接引用bean,我可以使用
complexBeanByReferences
样式,这在订购或其他考虑时可能很有用。
但说我想使用
complexBeanByReference
引用bean的样式
complexBeanByParameters
,这是一条直线:
@Bean
public ComplexBeanRegistry complexBeanRegistry() {
return new ComplexBeanRegistry(
Arrays.asList(
complexBeanByParameters(), // but this will not work!
complexBeanByReferences()
)
);
}
我如何参考
complexBeanByParameters
,而无需指定依赖项列表
complexBeanRegistry
? 老实说,后者应该完全忘记这一点。
可以选择只使用
public ComplexBeanRegistry complexBeanRegistry(List<ComplexBeans> complexBeans) {...}
当然,但在某些情况下,这可能不是一个选项,特别是在使用
CacheConfigurer
从…起
spring-context
。在这种情况下,Java Config旨在
-
创建bean
-
通过实施
缓存配置器
,替代
CacheManager
和
KeyGenerator
豆。
实施的要求
缓存配置器
意味着我不能更改签名以使用参数注入。
所以问题是,有没有参考方法
complexBeanByParameters
使用“直接”参考样式?