Por favor, mire el siguiente ejemplo:
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 }¿Hay alguna forma de lograr el comportamiento deseado sin reinventar la rueda?
Puedes usar
@Autowired private List<Converter> allConverter;
Esto inyectará todos los beans que están implementando la interfaz de Converter .
Ahora puede lanzar en bucle la lista y el método de convert de clases.
allConverter.stream().forEach(Converter::convert);Para administrar el orden de los convertidores, debe ordenar la lista.