@Controller
public class MemberController {
}
@Controller 어노테이션을 붙여주면
스프링 컨테이너에서 Controller 객체를 생성해서 실행, 관리한다.

컨트롤러 생성 후 객체를 만들 때,
private final MemberService memberService = new MemberService();
와 같이 new로 만들어서 따로 생성하기 보다는,
스프링 컨테이너에 하나만 등록해서 이것을 같이 쓰는 것이 좋다.
@Controller
public class MemberController {
private final MemberService memberService;
// @Autowired로 연결Spring 컨테이너에 등록
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
@Autowired라고 해주면,
스프링 컨테이너가 뜰 때 Controller 생성을 하는데,
그때 이 생성자를 호출한다.
그리고 @Autowired라고 되어있으면 스프링 컨테이너-멤버 서비스를 이곳에 연결을 시켜준다.
그리고 MemberService.java에 @Service 어노테이션을 해주면 되는데,
이를 통해서 스프링 컨테이너의 멤버 서비스를 이 클래스로 딱 등록해준다.
또 MemoryMemberRepository.java에는 @Repository라고 어노테이션 해주면 된다.
이렇게 보이다싶이, ~Controller.java에서는 @Controller
@~Service -.java 에서는 @Service
@~Repository.java 에서는 @Repository를 각각 어노테이션 해주어서
@Autowired 생성자에 연결해서 스프링 컨테이너가 뜰 때 이것들을 다 호출하는 것이다.

초록색 사각형이 @Component, 화살표가 @Autowired.
위 그림에서 helloController는 memberService가 필요하고, memberService는 memberRepository가 필요하므로 각각 @Autowired로 연결해준다.
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
MemberService 생성자 위에도 @Autowired 어노테이션을 넣어서
MemoryMemberRepository와 자동연결(autowire)해준다.
<스프링 빈을 등록하는 2가지 방법>
1. 컴포넌스 스캔과 자동 의존관계 설정
@Controller, @Service, @Repository를 붙여주는 것.
(원래는 @Component라고 해줘야 하는데 안에 다 들어있다.)
그리고 -> 가 @Autowired.
2. 자바 코드로 직접 스프링 빈 등록하기
'Framework > Spring' 카테고리의 다른 글
| 회원 웹 기능 - 홈 화면 추가 (0) | 2024.01.12 |
|---|---|
| 자바 코드로 직접 스프링 빈 등록하기 (0) | 2024.01.12 |
| 회원 서비스 테스트 (0) | 2024.01.09 |
| 회원 서비스 개발 (0) | 2024.01.09 |
| 회원 리포지토리 테스트 케이스 작성 (0) | 2024.01.09 |