package hello.hello_spring.controller;
import hello.hello_spring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
기본적으로 @Controller Annotation을 넣어주면 해당 객체를 스프링 컨테이너에 넣어준다. @Autowired를 붙여주면 연관된 객체를 컨테이너에서 찾아 넣어주게 된다. 이러면 스프링이 객체 의존관계를 넣어주기 때문에 외부에서 의존성 주입을 받는다하여 DI(Dependency Injection)이라 한다.
이를 실행하면 스프링 컨테이너 내에 일치하는 빈을 찾지 못한다는 에러를 받는다.

위 그림처럼 현재 memberService를 컨테이너에 넣어주지 않았기 때문에 @Service라는 특수 annotation을 통해 컨테이너에 등록해주고 MemoryMemberRepository도 @Repository를 통해 넣어준다.

스프링은 컨테이너에 빈을 등록할 때 싱글톤으로 등록한다. 이렇게 되면 하나의 빈만 존재하기 때문에 같은 스프링 빈이면 같은 인스턴스를 사용한다. 이를 통해 메모리 측면에서 이점을 얻을 수 있게된다.
'BE Study > Spring' 카테고리의 다른 글
| 회원 웹 기능- 등록 기능 구현하기 (0) | 2024.06.26 |
|---|---|
| 자바 코드로 직접 스프링 빈 등록하기 (0) | 2024.06.26 |
| 회원 서비스 테스트 (0) | 2024.06.21 |
| 회원 서비스 개발 (0) | 2024.06.20 |
| 회원 리포지토리 테스트 케이스 작성 (0) | 2024.06.20 |