Используйте разные objectMapper в разных restcontroller с webflux и springboot - PullRequest
0 голосов
/ 26 февраля 2020

Мне нужно внедрить две разные конфигурации objectMapper (Jackson2ObjectMapperBuilder) на две версии моего контроллера, я пробовал много примеров, но с webflux они не работают (с web Mvc работают нормально) .

@RestController
@RequestMapping("/v1")
public class ControllerV1 implements IController {
...
}

@RestController
@RequestMapping("/v2")
public class ControllerV2 implements IController {
...
}


@EnableReactiveMongoRepositories
public class Config extends AbstractReactiveMongoConfiguration {

    @Override
    public MongoClient reactiveMongoClient() {
        ...
    }

    @Primary
    @Bean(name = "objectMapperV1")
    public Jackson2ObjectMapperBuilder v1objectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.propertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
        ...
        return builder;
    }

    @Bean(name = "objectMapperV2")
    public Jackson2ObjectMapperBuilder v2objectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
        ...
        return builder;
    }

}

Единственный используемый преобразователь - это @Primary, как установить с помощью конфигурации v2objectMapperBuilder в ControllerV2?

ps: если внедрить v2objectMapperBuilder в ControllerV2 и использовать напрямую, очевидно, работает, но я не хочу этого.

...