ライブラリの設定とコンフィグ設定
build.gradle
下記を追記する。
dependencies {
implementation 'org.modelmapper:modelmapper:2.3.0'
}
@Configurationクラス作成
既存の@Configurationクラスに@Bean以下を追加する、または新規の@Configurationクラスを作成する。
@Configuration
public class ApplicationConfig {
@Bean
public ModelMapper modelMapper(){
ModelMapper modelMapper = new ModelMapper();
return modelMapper;
}
}
@Configurationクラスを作成しないと、SpringBoot起動時にModelMapperを@Autowiredできないというエラーになるので、必ず必要です。
使用する例
@Autowired private ModelMapper modelMapper;
@PostMapping
public PostResponse post(@RequestBody PostRequest request) {
MBook mBook = modelMapper.map(request, MBook.class);
MBook registered = bookService.register(mBook);
PostResponse response = modelMapper.map(registered, PostResponse.class);
return response;
}
@AutowiredをつけたModelMapperクラスのフィールドを宣言する。
mapメソッドを呼ぶ。第1引数にコピー元、第2引数にコピー先を指定する。コピー先を生成したければ、クラス名で指定する。
なぜModelMapperが必要なのか?
一般的な3層構造では層を分離することで、疎結合にし、保守性を高める狙いがあります。このとき、層の間で値の受け渡しが必ず発生します。
値の受け渡しは必要ですが、本質的に業務とは関係ない行為なので、コード行数を削減してコードの見通しをよくしたいところ。
そこで、ModelMapperの様なライブラリが活躍してくれます。