스프링 빈과 의존관계
회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자.
화면을 붙이고 싶은데, 그러려면 controller랑 view template이 필요함.
회원가입을 하고, 회원 가입된 결과를 HTML로 뿌려준다.
memberController가 memberService를 통해 회원가입을 하고, memberService를 통해 데이터를 조회할 수 있어야 한다.
이렇게 되는 걸 의존 관계가 있다고 표현한다.
💾 main > controller > MemberController
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
@Controller
public class MemberController {
}
이렇게까지만 만들면 기능은 아무것도 없지만, 스프링 컨테이너가 스프링일 처음 뜰 때 스프링 컨테이너라는 통이 생긴다.
거기에 @Controller (컨트롤 어노테이션)이 있으면 MemberController 객체를 생성해서 스프링에 넣어둔다.
그리고 스프링이 관리를 한다.
memberService에 에러가 뜬다.
그 이유는 💾 memberService는 순수 자바 클래스라서, 스프링이 알 방법이 없음.
💾 MemberService에 @Service 서비스 어노테이션 추가
💾 MemoryMemberRepository 에 @Repository 리포지토리 어노테이션 추가
Controller-Service-Reoisitory 는 굉장히 정형화된 패턴이다.
✔️ 스프링 빈 등록 이미지
- `memberService`와 `memberRepository`가 스프링 컨테이너에 스프링 빈으로 등록되었다.
💡 참고
- 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다. (유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴트다. 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다.
✔️ 스프링 빈을 등록하는 2가지 방법
- 컴포넌트 스캔과 자동 의존관계 설정
- 자바 코드로 직접 스프링 빈 등록하기
✔️ 컴포넌트 스캔과 자동 의존관계 설정
- `@Component` 애노테이션이 있으면 스프링 빈으로 자동 등록된다.
- `@Controller` 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문이다.
- `@Component`를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다.
- `@Controller`
- `@Service`
- `@repository`
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의 기록
300x250
'Framekwork > SPRING' 카테고리의 다른 글
[자바/스프링] H2 데이터베이스 설치 (0) | 2023.02.23 |
---|---|
[자바/스프링] 자바 코드로 직접 스프링 빈 등록하기 (0) | 2023.02.21 |
[자바/스프링] API (getter, setter, json) (0) | 2023.02.14 |
[자바/스프링] 정적 컨텐츠 (static) (0) | 2023.02.12 |
[자바/스프링] 빌드하고 실행하기 (윈도우) (0) | 2023.02.11 |