Spring bootで@RequiredArgsConstructorを使用してコンストラクタインジェクションを使用する

Spring bootで@RequiredArgsConstructorを使用してコンストラクタインジェクションを使用する

@RequiredArgsConstructorアノテーションをクラスに指定するとfinalなフィールドを初期化するコンストラクタが生成されます。

これにより今まで@Autowiredアノテーションでフィールドインジェクションしていたのが不要になります。

以下のようなイメージです。

@Service
@RequiredArgsConstructor
public class DemoService {
  @NonNull
  private final EmployeeRepository repository;// finalをつけること
  // 省略

これでrepositoryがコンストラクタインジェクションされてDIされるようになります。

Spring4.3以降からは単一のコンストラクタの場合、@Autowired自体が不要になります。

コメント

タイトルとURLをコピーしました