이번강의는
🚀 섹션 5. 스프링빈과 의존관계🚀
입니다!
1. 🛸 컴포넌트 스캔과 자동 의존관계 설정
일단 MemberController 라는 이름의 컨트롤러 파일 하나를 생성해주었습니다.
@controller -> 멤버 컨트롤러 객체를 생성해서 스프링에 넣어두고 스프링이 관리를 한다고 합니다.
스프링 컨테이너에서 스프링빈이 관리된다 << 이렇게 표현한다고 하네요 (@.@)
private final MemberService memberService = new MemberService();
스프링이 관리를 하게되면 전부 스프링컨테이너에 등록하고 스프링컨테이너로부터 받아서 쓰도록 바꾸어야한다.
new로 선언할 경우 -> 멤버 컨트롤러 말고 다른 컨트롤러에서 서비스를 가져다 쓸 수 있는 문제 발생
그래서! 이렇게 쓰는 것 보다는
스프링 컨테이너에 등록을 하고 쓰자.
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@Autowired -> 스프링이 스프링 컨테이너에 있는 멤버 스프링과 연결시켜줌
오류 발생!!!! -> 이전에 만든 멤버 서비스가 컨테이너에 등록되어있지 않음
이렇게 @Service 를 넣어줍시다 (스프링 컨테이너에 올려줘야합니다)
이렇게 Repository 파일에서 @Repository 도 작성해줍니다.
컨트롤러(외부요청) 서비스(비즈니스 로직) 레포지토리(데이터 저장)
정형화되어있는 패턴!!!
연결해 줄 때 @Autowired를 사용해주면 됩니다. => 의존관계 주입
스프링 빈을 등록하는 2가지 방법
- 컴포넌트 스캔과 자동 의존관계 설정
- 자바 코드로 직접 스프링 빈 등록하기
@Component 애노테이션이 있으면 스프링 빈으로 자동등록
@Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문
스프링 컨테이너에 스프링을 등록할 때 , 기본적으로 유일하게 단 한가지만 등록(싱글톤)
2. 🛸 자바 코드로 직접 스프링 빈 등록하기
@Configuration 클래스 안에서 @Bean 매서드로 빈을 직접 등록!!
Dependency Injection 방법
- 필드 주입, setter 주입, 생성자 주입
요즘은 생성자를 통한 주입을 권장한다고 하네요
어렵네요
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2025 1학기 스프링부트 스터디] 여민호 #4주차 (0) | 2025.05.06 |
---|---|
[2025 1학기 스프링부트 스터디] 류현준 #3&4주차 (0) | 2025.05.06 |
[2025 1학기 스프링부트 스터디] 이상래 #4주차 (0) | 2025.05.04 |
[2025 1학기 스프링부트 스터디] 고윤정 #4주차 (1) | 2025.05.04 |
[2025 1학기 스프링 부트 스터디] 남윤찬 #4주차 (0) | 2025.05.03 |