java - 如何通过Spring注解配置实现模板方法模式?

标签 java spring

如何通过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/

相关文章:

java - 尝试将数字的数字放入数组中,但结果相反

java.lang.ClassNotFoundException : org. apache.commons.collections4.ListValuedMap

spring - XA 事务和消息总线

java - Spring Security @PreAuthorize

java - 如何隐藏@RequestMapping 参数?

java - 三叉树实现出现空指针异常

java - 如何将 native 库和 JNI 库捆绑到 JAR 中?

java - 使用 Spring + 没有为参数指定值调用 Postgres 存储过程

javascript - HTML5 EventSource 发送多个请求

java - 哪个版本的 spring-security-core jar 与 Spring-core-4.1.9 兼容