资深开发人员,我想知道在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配置实现此操作很容易,只需向复合存储库提供一个列表即可。使用注释,我可以想到的一种方法是提供自定义配置类。这是要走的路吗?
答案 0 :(得分:3)
您只需注入一个CourseRepository对象列表,Spring就会为您提供一个列表,其中包含它所了解的所有CourseRepository类型的Bean。很简单:
@Autowired
private List<CourseRepository> repos;