如何通过Spring注解配置实现模板方法模式?
我想用抽象 bean 实现一个基本 @Configuration,它应该在每个派生配置中替换。
所有配置将一起使用。
@Configuration
public abstract class ParentConfig {
public ComplexBean complexBean() {
return new ComplexBeanImpl(templateBean(), bean2(), bean3(),...);
}
public abstract TemplateBean templateBean();
}
@Configuration
public class Child_1Config extends ParentConfig {
@Bean
public ComplexBean complexBean_1() {
return super().complexBean();
}
@Override
public TemplateBean templateBean() {
return new TemplateBeanImpl_1();
}
}
我很困惑我的父配置不包含任何bean,只包含糟糕的java方法。是春路吗?可以更优雅地实现吗?
最佳答案
As of Spring 4.3 ,您可以注册类型 Collection<T>
的 bean Autowiring (尽管您不能混合多个集合或具有“松散”bean 的集合)。在这种情况下,您可以收集所有模板,然后在一处创建复杂的 Bean:
@Bean
public List<ComplexBean> complexBeans(Collection<TemplateBean> templates) {
return templates.toStream().map(ComplexBean::new).collect(Collectors.toList());
}
(显然,如果您不能只使用 ComplexBean::new
,这会有点啰嗦,但同样的原则也适用。)
关于java - 如何通过Spring注解配置实现模板方法模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38984746/