10

Spring Data RESTサンプルプロジェクトに基づいた作業プロジェクトがあり、このwikiページに基づいて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);
    }

}

wikiページには次のように書かれています。

ApplicationContextのスコープ内で宣言されたモジュールBeanはすべて、エクスポーターによって取得され、そのObjectMapperに登録されます。

私はまだSpringに慣れていないので、モジュールBeanの定義を間違った場所に置いているだけかもしれません。現在、src/main/resources/META-INF/spring-data-rest/shared.xmlからインポートされたにありrepositories-export.xmlます:

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

にlogステートメントが表示されませんsetupModuleが、同じパッケージ内の他のクラスのログ出力は表示されます。

Spring DataREST1.0.0.RC2を使用しています。

4

2 に答える 2

11

現在、SpringBootのモジュールを次のようにカスタマイズすることができます。

@Bean
public Module customModule() {
  return new CustomModule();
}

参照:Springでの最新のJackson統合の改善

于 2015-10-30T02:35:32.333 に答える
6

私はあなたがリンクしたwikiエントリで概説されている解決策を使用して成功しました(おそらくこのスタックオーバーフローの投稿以来変更されています)

私の例では、spring-data-rest-webmvc@1.0.0.RELEASEを使用していました

あなたのコードは正しいようで、あなたのアプリケーションコンテキストが正しくロードされていれば、それが機能しない理由はわかりません。

日付フォーマッターの使用例を示す、より単純なモジュールを添付しました。

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

おそらく、問題となっているのが実際にジャクソンモジュールであるか、spring-data-rest-mvcwebであるかを概説するために使用できます。

于 2013-03-05T12:55:28.607 に答える