Spring bootでBeanを挿入する方法(@RequiredArgsConstructor )

Spring bootでBeanを挿入する方法

  • @Autowired
  • setter
  • コンストラクタ

コンストラクタを使おう

コンストラクタを使う場合は「@RequiredArgsConstructor」をクラスに付けて挿入してもらいたいフィールドをfinalで宣言するだけです。

@RequiredArgsConstructor // finalフィールドのコンストラクタを生成する
@Service
public class PostsService {
    // finalフィールドで宣言する
    private final PostsRepository postsRepository;

    @Transactional
    public Long save(PostsSaveRequestDto requestDto) {
        return postsRepository.save(requestDto.toEntity()).getId();
    }
}

@RequiredArgsConstructorアノテーションはfinalフィールドに対してインスタンスを挿入してくれます。

@RequiredArgsConstructor使う理由

コンストラクタを使わずにアノテーションを使う理由は以下となります。

  • 該当クラスの依存性の関係が変更されるたびにコンストラクタのコードを続けて修正するめんどくさいことを解決するためです。
  • Lombokアノテーションがあれば該当コントローラに新しいサービスを追加したり、既存コンポーネントを削除したりなどの状況が発生してもコンストラクタのコードは触らなくても済ませます。

コメントを残す