Spring을 사용하지 않고 JAX-RS (저지)로 간단한 REST 서비스를 만들려고합니다. 그리고 Joda를 내 엔터티의 날짜 필드로 사용하고 있습니다. JAX-RS, Jackson 및 JodaTime : 자동 구성이 작동하지 않습니다.
자동 JSON 매핑을 구성하려면 내가 추가 할 JsonMapperProvider을 만들 JodaModule : 이것은 내 자원 클래스@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonMapperProvider implements ContextResolver<ObjectMapper> {
final ObjectMapper objectMapper;
public JsonMapperProvider() {
objectMapper = new ObjectMapper();
objectMapper.registerModule(new JodaModule());
}
@Override
public ObjectMapper getContext(Class<?> arg0) {
return objectMapper;
}
}
입니다 :
@Path("users")
public class UserController {
@Inject
private UserService userService;
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public User getUserById(@PathParam("id") Long id) {
return userService.findById(id);
}
}
그리고 나는를 사용하고 있습니다 "no web.xml"구성은 다음 클래스로 구성됩니다.
@ApplicationPath("api")
public class RestApplication extends ResourceConfig {
}
하지만 작동하지 않습니다. User 엔터티의 LocalDate 필드는 항상 비어 있습니다. 이 문제에 대한 또 다른 해결책은
@ApplicationPath("api")
public class RestApplication extends ResourceConfig {
public RestApplication() {
super(
UserController.class,
JsonMapperProvider.class,
JacksonFeature.class
);
}
}
있습니까 : 내가 찾은 유일한 해결 방법은이처럼 ResourceConfig 클래스 (저지 - 미디어 JSON-잭슨에서 JacksonFeature 클래스를 포함하여) 모든 구성 요소를 등록하는 것입니다? 차라리이 수업에 내 모든 서비스와 다른 것들을 수동으로 등록하지 않을 것입니다 ...
그래, 그렇습니다. 그러나 내가 싫어하는 것은 : "수동으로"(ResourceConfig 하위 클래스 생성자 또는 응용 프로그램 메서드에서) JacksonMapper를 등록하면 내 자원 클래스를 등록해야합니다. 왜냐하면 어떤 이유로이 생성자를 만들면 \t 공공 RestApplication() { 패키지 ("COM : 자원 및 기타 물건 그런데 ..."수동으로 "등록 할 필요는, 나는 조금이와 함께, 그것은 작동, 수동 등록을 위해 개선 발견했다. edwise.pocs.jerseyrest "); 등록 (JacksonFeature.class); } – edwise