[TIL]航行9930日目


@Autowired


@Autowiredは、依存性注入の際に使用されるAnnotationであり、依存オブジェクトタイプに対応するbeanを検索および注入するために使用されます.

@Autowiredの使用可能な場所


@Autowiredは、デフォルトでは以下の場所で使用できます.
  • ジェネレータ(スプリング4.3から省略)
  • .
  • Setter
  • フィールド
  • @Service
    public class TestService {
    
        TestRepository testRepository;
        
        @Autowired
        public TestService(TestRepository testRepository) {
            this.testRepository = testRepository;
        }
    }
    上記のコードでは、TestRepositoryの依存注入を使用できますか?
    もちろん役に立たない.Autowiredは依存オブジェクトタイプに対応するbeanを検索して注入します.すなわち,TestRepositoryはbeanとして登録されていないため,スプリングはbeanが見つからず依存性を注入できない.
    正常に動作するには、@Repositoryまたは@Component Annotationを使用します.
    TestRepositoryをbeanに登録すればいいです.
    @Repository
    public class TestRepository {
    	....
    }
  • LOMBOK
    Lombokでは、コンストラクション関数を自動的に作成できます.@NorargConstructor宣言では、パラメータのないデフォルトの作成者が作成され、@AllargConstructor宣言では、すべてのフィールド値がパラメータの作成者として作成されます.最後に、@RequiredArgsConstructorは、finalまたは@NonNullフィールド値のみをパラメータとして受け入れるジェネレータを作成すると宣言します.