春についてのいくつかの学習コースとチュートリアルの後、私は時には最も優雅なやり方でやることに時々苦労します。Spring:既存のクラスと同じタイプのオートワイヤー・ビーンズ
私は、GregorianCalendarを処理するRestTemplateオブジェクトを構成する必要があります。これは、Jsonポスト本体に希望の形式で日付を印字し、ログ本体にポスト本体の内容を記録します。
ここでサブクラスを作成する必要はありません。既存のプロパティをカスタム値に設定するだけで、他のBeanを作成することができます。
このコードに問題はありませんが、使用するクラスに注入する方法はありますか? @Autowiredを使うときは、フレームワークのRestTemplateクラスと私のカスタマイズしたクラスを区別するために、修飾子を指定する必要があります。 または、ここでメソッドの名前であるid値を使用してBeanを挿入することはできますか?私の場合はsetuRestTemplateですか? おそらく、このBeanを名前で簡単に注入する方法がありますが、私はそれを行うためにあらかじめ決められた方法がわかりません。以下のよう
import org.springframework.web.client.RestTemplate;
//more imports
@Configuration
public class SixdegreesAppContext {
@Bean
public RestTemplate setuRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.setMessageConverters(getSetuMessageConverters());
//enable logging of post body
ClientHttpRequestInterceptor loggingRequestInterceptor = new LoggingRequestInterceptor();
List<ClientHttpRequestInterceptor> ris = new ArrayList<>();
ris.add(loggingRequestInterceptor);
restTemplate.setInterceptors(ris);
restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory())); //no sure why this is needed
return restTemplate;
}
@Bean
public List<HttpMessageConverter<?>> getSetuMessageConverters() {
List<HttpMessageConverter<?>> converters = new ArrayList<>();
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
jackson2HttpMessageConverter.setObjectMapper(getSetuObjectMapper());
converters.add(jackson2HttpMessageConverter);
return converters;
}
@Bean
public ObjectMapper getSetuObjectMapper() {
ObjectMapper jacksonObjectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(XMLGregorianCalendar.class, new XmlGregorianCalendarSerializer());
jacksonObjectMapper.registerModule(module);
return jacksonObjectMapper;
}
}
もちろん、静的なStringメンバーフィールドを定義し、必要に応じて参照することで名前を付けることができます。 –
ご返信ありがとうございます。@Resourceアノテーションはおそらく私が使用できるものです。メソッド名が既にidとして機能しているので、name属性が本当に必要ではないと思っていました。 – klausch
はい、そうです。あなたが望むならば、その暗黙のアイデンティティを使うことができます。しかし、それは誤解を招く可能性があります。しかし、どちらも機能します。お楽しみください。 –