[解決済み] RestTemplateを使用する場合、内部Jacksonマッパーはどのように構成されますか?
2023-07-04 22:25:32
質問
Spring RestTemplateで使用するJackson MapperのSerializationConfig.Feature...プロパティを更新したいのですが、どのように入手できるのか、どこで設定すればいいのか、何か見当はありますか。
どのように解決するのですか?
デフォルトの
RestTemplate
コンストラクタは
HttpMessageConverter
s:
this.messageConverters.add(new ByteArrayHttpMessageConverter());
this.messageConverters.add(new StringHttpMessageConverter());
this.messageConverters.add(new ResourceHttpMessageConverter());
this.messageConverters.add(new SourceHttpMessageConverter());
this.messageConverters.add(new XmlAwareFormHttpMessageConverter());
if (jaxb2Present) {
this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
}
if (jacksonPresent) {
this.messageConverters.add(new MappingJacksonHttpMessageConverter());
}
if (romePresent) {
this.messageConverters.add(new AtomFeedHttpMessageConverter());
this.messageConverters.add(new RssChannelHttpMessageConverter());
}
は
MappingJacksonHttpMessageConverter
を作成し、次に
ObjectMapper
のインスタンスを直接生成します。このコンバータを見つけて
ObjectMapper
を置き換えるか、その前に新しいものを登録するかです。これでうまくいくはずです。
@Bean
public RestOperations restOperations() {
RestTemplate rest = new RestTemplate();
//this is crucial!
rest.getMessageConverters().add(0, mappingJacksonHttpMessageConverter());
return rest;
}
@Bean
public MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter() {
MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
converter.setObjectMapper(myObjectMapper());
return converter;
}
@Bean
public ObjectMapper myObjectMapper() {
//your custom ObjectMapper here
}
XMLでは以下のような感じです。
<bean id="restOperations" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<util:list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="customObjectMapper"/>
</bean>
</util:list>
</property>
</bean>
<bean id="customObjectMapper" class="org.codehaus.jackson.map.ObjectMapper"/>
この遷移は実際には 1:1 ではないことに注意してください - 明示的に
messageConverters
のリストを XML で作成する必要があります。
@Configuration
を使えば、既存のものを参照し、それを修正するだけでよいのです。しかし、これはうまくいくはずです。
関連
-
[解決済み] JsonMappingException: No suitable constructor found for type [simple type, class ]: can't instantiate from JSON object.
-
[解決済み] Jacksonでシリアライズ(JSON) - "No serializer found "と表示される?
-
[解決済み】 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
-
[解決済み】JACKSONがフィールドのみを使用するように指定する方法 - できればグローバルに使用したい
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Spring Bootが暗黙的に使用するJackson JSONマッパーをカスタマイズする方法とは?
-
[解決済み] SpringでLocalDateTime RequestParamを使用するには?StringからLocalDateTimeへの変換に失敗しました」と表示される。
-
[解決済み] Spring Data Rest - 複数のプロパティでソートする
-
[解決済み] OncePerRequestFilterとは何ですか?
-
[解決済み] Springのアノテーション@Controllerは@Serviceと同じですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring Hibernate - 現在のスレッドでトランザクションに同期したセッションを取得できませんでした。
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Maven依存性 spring-webとspring-webmvcの比較
-
[解決済み] Spring BootとMongoDBへの接続設定方法
-
[解決済み] Spring DAOとSpring ORMとSpring JDBCの比較
-
[解決済み] Spring RestTemplateでSSL証明書検証を無効にする
-
[解決済み] Spring Bootアプリケーションの環境指定application.propertiesファイル [終了しました]。
-
[解決済み] Springは@Autowiredアノテーションを付けずにコンストラクタに依存性を注入する
-
[解決済み] モックMVC - リクエストパラメータをテストに追加する
-
[解決済み] OncePerRequestFilterとは何ですか?