repositoryrestresource - Registrando un módulo Jackson para Spring Data REST
spring data rest custom controller (2)
He tenido éxito al usar la solución descrita en la entrada de la wiki a la que te has vinculado (aunque tal vez haya cambiado desde esta publicación de desbordamiento de pila)
En mi caso, yo estaba usando [email protected]
Su código parece ser correcto y siempre que el contexto de la aplicación se cargue correctamente. No veo ningún motivo para que no funcione.
Adjunté mi Módulo más simple que ejemplifica el uso de un formateador de fecha:
@Component
public class JsonMarshallingConfigModule extends SimpleModule {
public JsonMarshallingConfigModule() {
super("JsonMarshallingConfigModule", new Version(1, 0, 0, "SNAPSHOT"));
}
@Override public void setupModule(SetupContext context) {
context.getSerializationConfig().setDateFormat(new SimpleDateFormat("yyyy-MM-dd''T''HH:mm''Z''"));
}
}
Tal vez se pueda usar para delinear si de hecho es el módulo de jackson el problema o spring-data-rest-mvcweb.
Tengo un proyecto de trabajo basado en el proyecto de ejemplo REST de Spring Data, y estoy tratando de hacer una serialización personalizada usando un módulo de Jackson basado en esta página wiki .
Aquí está mi módulo de Jackson:
public class CustomModule extends SimpleModule {
public static Logger logger = LoggerFactory.getLogger(CustomModule.class);
public CustomModule() {
super("CustomModule", new Version(1, 0, 0, null));
}
@Override
public void setupModule(SetupContext context) {
logger.debug("CustomModule.setupModule");
SimpleSerializers simpleSerializers = new SimpleSerializers();
simpleSerializers.addSerializer(new CustomDateTimeSerializer());
context.addSerializers(simpleSerializers);
}
}
La página wiki dice:
Cualquier bean Module declarado dentro del alcance de su ApplicationContext será recogido por el exportador y registrado con su ObjectMapper.
Todavía soy bastante nuevo en Spring, por lo que podría estar poniendo mi definición de beans de módulos en el lugar equivocado; actualmente está en src/main/resources/META-INF/spring-data-rest/shared.xml
, que se importa desde repositories-export.xml
:
<bean id="customModule" class="org.hierax.wpa.schema.mapping.CustomModule" />
No veo la declaración de registro en setupModule
, pero sí veo salida de registro para otras clases en el mismo paquete.
Estoy usando Spring Data REST 1.0.0.RC2.
Actualmente, es posible personalizar un módulo en Spring Boot de esta manera:
@Bean
public Module customModule() {
return new CustomModule();
}
Referencia: Últimas mejoras de integración de Jackson en Spring