我有一个简单的构造函数注入示例,但我无法使用:
@Component
public class ScienceFilenameMetadataProcessor extends ScienceBasicFileProcessor implements Processor {
private final FilenameParser parser;
@Autowired
public ScienceFilenameMetadataProcessor(FilenameParser parser) {
this.parser = parser;
}
}
字符串FilenameParser
是一个接口,包含几个实现。使用@标识符标识。
我想从另一个类中使用这个组件:
@Autowired
public SoarScienceCdfFileRouteBuilder(@Qualifier("cdfFileNameParser") FilenameParser filenameParser) {
this.scienceFilenameMetadataProcessor = new ScienceFilenameMetadataProcessor(filenameParser);
}
型
我想把filenameParser传递给构造函数。但是当然我想避免new关键字,否则spring不会正确初始化我的类。但是我想避免在ScienceFilenameMetadataProcessor
类中硬编码filenameParser实现。
这怎么可能。
谢谢
1条答案
按热度按时间uqxowvwt1#
提供的代码定义了一个简单的Spring应用程序,其中包含一个配置类、接口和几个实现接口的类。然后使用注解将这些类注入到Spring组件中。
1.接口
In
:字符串
这个接口声明了一个方法
getClassName()
。2.实现类:
a. A类:
型
B. B类:
型
ClassA
和ClassB
都实现了In
接口,并提供了自己的getClassName()
方法实现。3.配置类
Config
:型
这个配置类定义了名为
classA
和classB
的bean。这些bean将被注入到其他组件中。4.处理器:
型
a. ProcessorClassA:
型
B.处理器类B:
型
5. RouteBuilder类:
型
6.另一个RouteBuilder类:
型
6.验证结果:
型
如果您还有其他问题,请随时询问!