스프링 빈 등록 & 의존관계 자동 설정
2025. 8. 5. 16:21ㆍSpring
🐢 스프링 빈 등록 방법 2가지
1.컴포넌트 스캔 + 자동 의존관계 설정(@Componenet 계열)
2.자바 코드로 직접 등록(@Configuration + @Bean)
🐢 1. 컴포넌트 스캔과 자동 의존관계 설정
- @Component 달린 클래스 → 자동으로 스프링 빈 등록됨 🐢
- @Controller, @Service, @Repository 도 사실상 @Component 포함하고 있음
👉 그래서 컨트롤러/서비스/리포지토리 클래스 위에 어노테이션만 붙여도 스프링이 알아서 빈 등록함
✔️자동 등록의 원리
- 스프링은 시작 시 @Component 달린 클래스 전부 스캔
- 하위 패키지 전부 싹 뒤져서 빈으로 등록함
- 등록된 빈은 기본적으로 싱글톤(하나만 생성)
✔️스프링 빈으로 등록하면 좋은 이유?
- 스프링 컨테이너가 객체 생성 + 관리 + 공유 다 해줌
- 개발자가 new로 계속 만들 필요 없음 -> 중복, 메모리 낭비 방지
✔️그럼 아무 클래스에 @Componenet 붙이면 됨? Nope!!
- 스프링이 스캔하는 패키지 범위 안이어야 함
- 일반적으로 메인 클래스(@SpringBootApplication)패키지 하위만 스캔
🐢 2. 자바 코드로 직접 스프링 빈 등록
- 정형화되지 않은 코드나, 상황에 따라 구현체를 바꿔야 할 때 사용
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository(); // 구현체 직접 명시
}
}
🐢 실무에서 쓰는 패턴
- 정형화된 컨트롤러/서비스/리포지토리 -> @Component스캔
- 바꿀 수 있는 구현체 -> @Bean등록
✔️상황에 따라 구현 클래스를 변경해야하는 경우
- 개발 초기 : 메모리 저장소로 개발
- 운영 단계 : DB저장소로 교체
👉 이럴 때 스프링 설정파일에서 @Bean만 수정하면 전체 코드 수정 없이 갈아끼움 가능
'Spring' 카테고리의 다른 글
| 회원관리 예제로 배우는 스프링 기본기(테스트 코드, Optional, 람다 등등) (4) | 2025.08.05 |
|---|---|
| MVC 구조 완전 쉽게 + @ResponseBody까지 (2) | 2025.08.05 |
| 스프링 부트 프로젝트 생성부터 실행까지 (Gradle vs Maven, 설정, 라이브러리 구조 완벽 정리!) (2) | 2025.08.04 |