带有Spring注释的复合设计模式

时间:2019-03-19 13:55:00

标签: java spring

资深开发人员,我想知道在Spring中实现带有注释的复合模式的最佳方法是什么。我正在尝试创建一个包装其他组件集合的组件,并在每个组件上调用相应的方法:

@Slf4j
@Repository("courseRepository")
public class CompositeRepository implements CourseRepository {

    private List<CourseRepository> repos = new ArrayList<CourseRepository>();

    @Override
    public Page<Subject> findSubjects(AcademicCareer career, Pageable pageable) {
        for (CourseRepository r : repos) {
            try {
                return r.findSubjects(career, pageable);
            } catch (Exception e) {
                log.info("Unable to invoke findSubjects on " + r, e);
            }
        }
        throw new IllegalStateException("Unable to complete findSubjects");
    }
}

这样,如果一个回购失败,总会有一个回退。使用XML配置实现此操作很容易,只需向复合存储库提供一个列表即可。使用注释,我可以想到的一种方法是提供自定义配置类。这是要走的路吗?

1 个答案:

答案 0 :(得分:3)

您只需注入一个CourseRepository对象列表,Spring就会为您提供一个列表,其中包含它所了解的所有CourseRepository类型的Bean。很简单:

@Autowired
private List<CourseRepository> repos;