java - Spring/Spring Boot 转换 - 如何在 Converters 上建立链?

标签 java spring spring-boot kotlin

请看下面的例子:

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/

相关文章:

Java:如何在文件中找到相遇词的数量?

java - Android studio 3.0渲染 "Exception raised during rendering"和 "onMeasure error"

java - 启动时未找到 Spring MVC 资源

java - Spring Boot应用程序(特定于配置文件).properties返回null

java - @ManyToMany 保存关系仅在一个方向上可用一次

java - Primefaces - 带有 CommandLink 的上下文菜单

java - 从对象数组访问对象类型方法 java

java - 使用Spring @ControllerAdvice的全局错误处理程序不起作用

initialization - Spring Boot - 从 application.yml 注入(inject) map<Enum,Class>

java - Spring Boot 退出代码生成器 - 实现不起作用