请看下面的例子:
class Foo
class Bar
class Baz
@Component
class FooToBarConverter : Converter<Foo, Bar> {
override fun convert(source: Foo) = Bar()
}
@Component
class BarToBazConverter : Converter<Bar, Baz> {
override fun convert(source: Bar) = Baz()
}
@RestController("/test")
class TestController(val conversionService: ConversionService) {
@GetMapping
fun get() = "test: " + conversionService.convert(Foo(), Baz::class.java)
// must convert Foo to Bar, then Bar to Baz, but throws an exception instead
}
有没有办法在不重新发明轮子的情况下实现预期的行为?
最佳答案
你可以使用
@Autowired private List<Converter> allConverter;
这将注入(inject)所有实现 Converter
的 beans界面。
现在你可以循环抛出列表和类convert
方法。
allConverter.stream().forEach(Converter::convert);
要管理转换器的顺序,您需要对列表进行排序。
关于java - Spring/Spring Boot 转换 - 如何在 Converters 上建立链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54345991/