Jax-rs ContextResolver для пользовательских ObjectMapper - PullRequest
0 голосов
/ 12 февраля 2020

Я не уверен, как зарегистрировать мой пользовательский объектный создатель, который я создал ниже, в качестве компонента и внедрить его в качестве зависимости в другие объекты через конструктор или Autowire


@SpringBootApplication
public class DemoApplication {

@Bean
//how to register it as a bean here and inject wherever I need to via @Inject or @Autowire

public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}


@Provider
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
    private final ObjectMapper objectMapper = new ObjectMapper();

    public ObjectMapperProvider() {
        this.objectMapper.disable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
    }

    @Override
    public ObjectMapper getContext(final Class<?> type) {
        return objectMapper;
    }
}

1 Ответ

1 голос
/ 12 февраля 2020

Будьте осторожны с этим. Вы смешиваете Jax-RS и Spring, но вам нужно кое-что знать: Spring не полностью реализует спецификацию Jax-RS ... Причина? Spring MVC был разработан примерно в то же время, что и JAX-RS, и после выпуска JAX-RS они никогда не мигрируют для реализации этого (кто бы это ни делал)?

Лучший способ объявить свой собственный ObjectMapper с Spring будет выглядеть следующим образом:

@SpringBootApplication
public class DemoApplication {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        // DO what you want;
        return objectMapper;
    }

    public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
}

Затем вы можете использовать @Autowired, чтобы добавить ObjectMapper в класс, который в этом нуждается. (проверьте эту ссылку, если хотите: Настройка ObjectMapper в Spring )

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

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