У меня есть приложение jersey2, сконфигурированный для поддержки JSON через Джексон, добавивКак получить ссылку на Mapper объектов Джексона в приложении jersey2/hk2
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
в файле POM и
public MyApplication() {
...
register(JacksonFeature.class)
...
}
в моем приложении. Все работает, мои ресурсы получить десериализованный POJO, в качестве аргументов
@POST @Consumes(MediaType.APPLICATION_JSON)
public void blah(MyPojo p) {
...
}
Теперь один из thoese ресурсов необходима ссылка на Джексон ObjectMapper
сделать некоторые десериализации самостоятельно. Я пытался сделать что-то вроде
@Inject
public MyResource(@Context ObjectMapper mapper) {
...
}
или
@GET
public String foo(@Context ObjectMapper mapper) {
...
}
, но в обоих случаях ссылка на mapper
является нулевым. Как я могу ввести ссылку на ObjectMapper
в свои ресурсы?
Это работает, но поскольку у меня нет необходимости (пока?) Пользовательского предоставленного 'ObjectMapper', я надеялся, что вы воспользуетесь созданным вами Джерси вместо того, чтобы предоставлять свои собственные. – agnul
Если у кого-то «проблема: абстрактные типы либо должны быть сопоставлены конкретным типам» с Dropwizard, даже если вы зарегистрировали модуль с 'addAbstractTypeMapping', это решение устранило проблему как очарование (просто зарегистрируйте свой модуль в' createDefaultMapper' и зарегистрируйте этот «поставщик» с 'environment.jersey(). register()' в 'run()' вашего 'приложения')! – qwertzguy