[TIL] 항해99 30일차

심우진·2021년 10월 13일
0

@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을 사용하면 생성자도 자동으로 생성할 수 있습니다. @NoArgsConstructor 어노테이션은 파라미터가 없는 기본 생성자를 생성해주고, @AllArgsConstructor 어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 만들어줍니다. 마지막으로 @RequiredArgsConstructor 어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어줍니다.

0개의 댓글

관련 채용 정보