2012-10-04 8 views
5

Tôi có một dự án làm việc dựa trên dữ liệu Spring REST example project và tôi đang cố gắng thực hiện tuần tự hóa tùy chỉnh bằng cách sử dụng Jackson module dựa trên số wiki page này.Đăng ký một mô-đun Jackson cho dữ liệu mùa xuân REST

Dưới đây là mô-đun Jackson của tôi:

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); 
    } 

} 

Các wiki page nói:

Bất kỳ đậu đun tuyên bố trong phạm vi ApplicationContext của bạn sẽ được chọn của các nhà xuất khẩu và đăng ký với ObjectMapper của nó.

Tôi vẫn còn khá mới đối với Spring nên tôi có thể chỉ định định nghĩa bean mô-đun của mình ở vị trí sai; hiện nó trong src/main/resources/META-INF/spring-data-rest/shared.xml, được nhập khẩu từ repositories-export.xml:

<bean id="customModule" class="org.hierax.wpa.schema.mapping.CustomModule" /> 

Tôi không thấy báo cáo kết quả đăng nhập setupModule, nhưng tôi thấy đăng nhập đầu ra cho các lớp khác trong cùng một gói.

Tôi đang sử dụng Spring Data REST 1.0.0.RC2.

+0

Bạn đã bao giờ tìm thấy một giải pháp cho điều này? –

+0

Không, nhưng tôi đã hỏi trên diễn đàn Dữ liệu mùa xuân và có thể nó sẽ nhận được trả lời ở đó: http://forum.springsource.org/showthread.php?130782-Spring-Data-REST-registering-a- Jackson-đun-cho-serialization –

Trả lời

4

Tôi đã thành công bằng cách sử dụng giải pháp được nêu trong mục wiki mà bạn đã kết nối với (mặc dù có lẽ nó đã thay đổi kể từ stack overflow bài này)

Trong trường hợp của tôi, tôi đã sử dụng lò xo dữ liệu rest- [email protected]

Mã của bạn có vẻ đúng và miễn là ngữ cảnh ứng dụng của bạn đang được tải chính xác Tôi không thấy bất kỳ lý do nào khiến nó không hoạt động.

Tôi đã gắn liền Mô-đun đơn giản của tôi mà minh họa việc sử dụng một định dạng ngày:

@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'")); 
    } 
} 

Có lẽ nó có thể được sử dụng để phác thảo nếu nó là Infact module jackson đó là vấn đề hoặc lò xo đĩa dữ liệu phần còn lại-mvcweb.

+0

Cảm ơn bạn đã chia sẻ giải pháp của bạn! Gần đây tôi đã cập nhật [email protected] và di chuyển sang cấu hình dựa trên mã như trong dự án ví dụ, và bây giờ tôi đã làm việc với việc bổ sung @Component trên CustomModule. –

+0

Dường như không làm cho nó hoạt động. Thành phần được nạp, tôi có thể thấy cá thể được tạo ra, tuy nhiên, setupModule() không được gọi. Tại sao? –