まず、理解HttpMessageConverter
HttpMessageConverter(メッセージ変換ツール):
それなしですべての生のJSON成都、SpringMVC自動的に設定Jackson
してGson
あるHttpMessageConverter
ので、ユーザーJackson
やGson
あなたならば追加の構成は、あなただけの依存関係があることができ追加する必要があります。
使用したSpring MVCのHttpMessageConverter
インタフェース変換HTTPリクエストとレスポンスを。賢明なデフォルト設定は、中に含まれています开箱即用
。あなたが設定する場合、私は、意味Jackson
とGson
、あなたが設定する必要はありません場合は、システム提供を使用し、お使いのシステムのデフォルトを使用します!これは、春の主流の考え方である:SpringBoot契約は設定よりも大きく、
1.APIが結果を返すとJavaは、フロントエンドに返されたオブジェクトにJSON形式のデータを解析する方法を、JSON文字としてシリアル返さエンドサービスオブジェクトしようとしている
データはJavaに解析されるか、着信JSONの2.フロントエンドは、APIにオブジェクトをパラメータとして、意志すぐにフロントエンドJSON文字列は、Javaオブジェクトにデシリアライズ来ました
第二には、ソースコードを表示します
依存関係の簡単な春のプロジェクトを作成し、ウェブ依存性をインポートし、信頼に依存JSONが含まれて見つけることができ、追加のアドオンそう。
- JSON:
ロケーション:org/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration.java
(Gsonは完全に一致しているが、Gsonの使用は、それぞれのGsonに依存追加する必要があるため。)
@Configuration(proxyBeanMethods = false)
class JacksonHttpMessageConvertersConfiguration {
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ObjectMapper.class)
@ConditionalOnBean(ObjectMapper.class)
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY,
havingValue = "jackson", matchIfMissing = true)
static class MappingJackson2HttpMessageConverterConfiguration {
@Bean
@ConditionalOnMissingBean(value = MappingJackson2HttpMessageConverter.class,
ignoredType = {
"org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter",
"org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter" })
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
return new MappingJackson2HttpMessageConverter(objectMapper);
}
}
@ConditionalOnClass(ObjectMapper.class)
:あなたが依存JSONインポートする場合、システムは上記の構成、使用がデフォルトになりますMappingJackson2HttpMessageConverter
有効にするには、変換ツール。
@ConditionalOnMissingBean
:なし豆の設定がない場合、システムは、追加等の時刻形式、必要な自己設定の必要性を持っている場合、システムは、ユーザが設定した優先ビーンビーンなるとシステム構成を無視し、ここで豆にデフォルト設定されます
第三に、カスタム設定
シンプルを書き込むためのコントローラクラス、簡単なテスト
@RestController
@RequestMapping("/test")
public class StudentController {
@GetMapping("/hello")
public Student get(){
Student student = new Student();
student.setId((long) 1);
student.setAge(15);
student.setName("alvin");
student.setBirthday(new Date());
return student;
}
}
インターフェースポストマンコール
と共にエンティティクラス対応マップフィールド@JsonFormat(pattern = "yyyy-MM-dd")
注釈フォーマットは変更します
public class Student {
private Long id;
private String name;
private Integer age;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday
}
このように簡単な操作ですが、非常に実用的ではない、プロジェクトはエンティティクラスの複数を含んでおり、このように、日付プロパティを追加するエンティティを複数含む各クラスは非常に退屈でエラーが発生しやすくなります!場合
したがって、全体的な構成が使用することで、使用に便利であるJacksonHttpMessageConvertersConfiguration.java
アクションを、ユーザが独立にフォーマット変換JSONを設定することができ
構成:
オプション1:
[新規作成JsonConfig.java
Aの設定クラスを(前にテストすることを忘れないでください@JsonFormat(pattern = "yyyy-MM-dd")
注釈がコメントアウト)
@Configuration
public class JsonConfig {
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
//更改日期全局配置
objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
converter.setObjectMapper(objectMapper);
return converter;
}
}
豆は置き換えられますJacksonHttpMessageConvertersConfiguration.java
よう、Beanを@ConditionalOnMissingBean
満たされた、システムのデフォルトの設定が自動的に失効します。
- 郵便配達の呼び出しは、日付形式は、生成
もこの方法で使用することができる他の構成の多くは、次のobjecMapper:
オプション2:
スキームを見つけることができますを通じて、フォーマット操作を主にしている修正しobjecMapper
、操作しMappingJackson2HttpMessageConverter
、我々は一人で提供できるようにオブジェクトが実際に、当社の営業フォーマットに何もしない提供するために、単にObjectMapper
@ConditionalOnClass(表示されJacksonHttpMessageConvertersConfiguration.javaにObjectMapper.class)、Objectmapperはすなわち、異なる注入構成から来ているJacksonAutoConfiguration.java
位置:org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration.java
もちろん、私たちはここに後にプログラム確かに、ここでそれらを検証、デバッグすること!
したがって、我々は個別にできるJsonConfig.java
ObjectMapperをすることができます設定します!
@Bean
ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
return objectMapper;
}
デバッグと@Beanユーザーの自己構成を行くためのプログラムを発見し、システムが自動的に@Bean自動設定が無視
力にまだあります。