Spring / Spring Boot Conversion - как сделать цепочку на конвертерах? - PullRequest
0 голосов
/ 24 января 2019

Пожалуйста, посмотрите на пример ниже:

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
}

Есть ли способ достичь желаемого поведения, не изобретая велосипед?

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать
@Autowired private List<Converter> allConverter;

Это позволит внедрить все bean-компоненты, которые реализуют интерфейс Converter.

теперь вы можете использовать цикл броска списка и метод класса convert.

allConverter.stream().forEatch(Converter::convert);

Чтобы управлять порядком конвертеров, вам нужно отсортировать список

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...