반응형
@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 |
---|