Controller - 외부 요청 받음
Service - 비즈니즈 로직 생성
Repository - 데이터 저장
@Autowired
컨트롤러와 서비스를 연결시켜줄 때 사용, 생성자에 이렇게 쓰면
컨트롤러가 생성될 때 스프링빈에 등록되어있는 멤버서비스 객체를
가져다 넣어줌 - DI
@Component 애노테이션이 있으면 스프링 빈으로 자동 등록
@Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도
컴포넌트 스캔 때문
@Component를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록
@CONTROLLER
@Service
@Repository
스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록
(유일하게 하나만 등록해서 공유) 따라서 같은 스프링 빈이면 모두 같은 인스턴스, 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용
지식 출처 - 김영한(우아한형제들 팀장)님의 스프링 강의