BACK_END/문제해결

0408_ Spring 에서 @Autowired가 되는 이유?

minquu 2025. 4. 8. 10:00
반응형
@Component
public class MemberInfoPrinter {

    private MemberDao memberDao;

    @Autowired
    public void setMemberDao(MemberDao memberDao) {
        System.out.println("setMemberDao called!");
        this.memberDao = memberDao;
    }
}

 

이런식으로 메서드에  @Autowired 를 걸어주면
Spring 컨테이너에서 메서드를 호출 시켜주고, 필드까지 찾아서 매개변수로 넘겨주는 방식임

 

 

✅ 세터 주입 vs 필드 주입 vs 생성자 주입

필드 주입 코드 간단 테스트 어려움 (setter 없음)
세터 주입 테스트 용이, 선택적 의존성 주입 가능 의존성이 명확하지 않음
생성자 주입 불변성 보장, 명확한 의존성 표시 생성자 인자가 많으면 가독성 저하

 

🔧 작동 방식 핵심 요약

@Autowired가 붙은 메서드는 빈이 생성된 후, Spring이 해당 메서드를 찾아서 자동으로 호출

파라미터에 해당하는 빈(MemberDao)을 컨테이너에서 찾아서 자동으로 주입

결국, memberDao 필드에 원하는 객체가 들어가 있게 됨

반응형

'BACK_END > 문제해결' 카테고리의 다른 글

0401_Set Attribute 제대로 안 넘어가는 이슈  (0) 2025.04.01