public interface TopicGenerator {
File create(MultiValueMap params);
boolean accept(MultiValueMap params);
}
@RequiredArgsConstructor
public class JavaTopicGenerator implements TopicGenerator {
//implementation ommited for readability
@RequiredArgsConstructor
public class PhpTopicGenerator implements TopicGenerator {
//implementation ommited for readability
@RequiredArgsConstructor
public class CppTopicGenerator implements TopicGenerator {
//implementation ommited for readability
@RequiredArgsConstructor
public class TopicFacade {
@NonNull
private final TopicService topicService;
@NonNull
private final List<TopicGenerator> topicGenerators;
public void generate(MultiValueMap<String, String> params, HttpServletResponse response) {
for (TopicGenerator topicGenerator : topicGenerators) {
if (topicGenerator.accept(params)) {
File tempFile = topicService.generate(params);
//do something else.
}
}
}
}
@Service
@RequiredArgsConstructor
public class TopicServiceImpl implements TopicService {
@NonNull
private final List<TopicGenerator> reportGenerators;
public File generate(MultiValueMap params) {
for (TopicGenerator topicGenerator : topicGenerators) {
if (topicGenerator.create(params)) {
return topicGenerator.export(params);
}
}
我得到一个错误,如:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“topic serviceimpl”的bean时出错:通过字段“topic generators”表示的未满足的依赖项;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“java.util.list
(早些时候,当我使用字段注入而不是构造函数时,我能够在3个实现中的一个之前添加@service
,代码正在工作,但这不是我想要的。)
可以定义list
类型的bean,如下所示:
@Configuration
public class AppConfig {
@Autowired
private TopicGenerator cppTopicGenerator;
@Autowired
private TopicGenerator phpTopicGenerator;
@Autowired
private TopicGenerator javaTopicGenerator;
@Bean
public List<TopicGenerator> topicGeneratorList()
{
return Arrays.asList(cppTopicGenerator, phpTopicGenerator, javaTopicGenerator);
}
}
这样,您的原始代码就可以正常工作了。
bean可以用它们各自的类名的camelCase来引用。例如,cppTopicGenerator将引用类cppTopicGenerator.java的bean。虽然使用@qualifier更清晰是一个好的做法。
本文向大家介绍基于spring 方法级缓存的多种实现,包括了基于spring 方法级缓存的多种实现的使用技巧和注意事项,需要的朋友参考一下 方案实施 1、 spring和ehcache集成 主要获取ehcache作为操作ehcache的对象。 spring.xml中注入ehcacheManager和ehCache对象,ehcacheManager是需要加载ehcache.xml配置信息,创建ehc
我试图研究Spring更具体的Spring数据,但我对interface Repository及其派生类的使用有一个问题,我请求您帮助澄清这些问题。 例如,我看到这个代码示例扩展CrudRepository,但我看到使用扩展关键字,但没有实现。为什么?我认为扩展是针对子类的,或者如果我使用抽象类和接口实现。 另一个问题是测试我尝试从两个类扩展的另一个案例(我知道java不允许多个),但java允许
本文向大家介绍详解Spring学习总结——Spring实现AOP的多种方式,包括了详解Spring学习总结——Spring实现AOP的多种方式的使用技巧和注意事项,需要的朋友参考一下 目录 一、基于XML配置的Spring AOP 二、使用注解配置AOP 三、AspectJ切点函数 四、AspectJ通知注解 五、零配置实现Spring IoC与AOP AOP(Aspect Oriented Pr
在SpringMVC请求头中可以有多种内容类型吗?我要通过: 通过邮递员到我的API。目前,我得到了
本文向大家介绍详解ListView中多种item的实现方式,包括了详解ListView中多种item的实现方式的使用技巧和注意事项,需要的朋友参考一下 大家都知道在实际开发时,对ListView的使用比较频繁,其表现也非常复杂。本文将通过实例介绍ListView中多种item的实现方式,下面来一起看看吧。 使用ListView一般步骤: 设置显示的ListView,设置显示的每一项item的vie
我有多模块maven项目,每当我运行它时,我都会得到以下错误: 但是上面的解决方案对我都不起作用。 下面是模块的pom.xml: 下面是模块的依赖关系树: