This is personal study note
Copyright and original reference are from:
www.youtube.com/watch?v=0ktRT5Fatnw
스프링 프레임워크 강의 16강 - 특화된 @Component 어노테이션 (@Controller/@Service/@Repository)
스프링_프레임워크_강의_16강_특화된_@Component_어노테이션_@Controller_@Service_@Repository
================================================================================
- 지난 시간에 @Component 사용해서 객체를 생성하는 설정을 했음
================================================================================
- @Component 를 사용하여 NewlecExam 객체를 생성함
- 어노테이션을 사용해서 객체를 생성할 때는, 값을 어떻게 초기화 할 것인가?
- @Value 를 사용함
================================================================================
================================================================================
- NewlecExam 은 기본값이 없는 상태임
- 기본값이 없는 상태에서 IoC 컨테이너에 담김
================================================================================
- 기본값이 없어서 0 출력
================================================================================
- kor 기본값 20 설정
================================================================================
================================================================================
- NewlecExam 클래스는 @Component 로 객체화하는 것이 의미상으로는 맞지 않다
- @Component 를 클래스에 붙이면 객체화 할 수 있음
- MVC 방식으로 웹어플리케이션을 만들때, MVC 를 구성하는 자바코드를 컴포넌트라고 함
- 그래서 Component 라는 용어보다, 의미론적으로 상세한 표현을 위해, @Controller, @Service, @Repository 를 사용함
================================================================================
- 다 실행 된다
- 이름이 좀더 의미론적으로 특화된 차이만 있음
================================================================================
================================================================================
- Controller (C):
- 사용자의 입출력을 담당
- 요청에 맞게 데이터 서비스를 위임함
- Service 역할
- 사용자의 요구사항에 맞는 서비스를 제공함
- Controller 로 부터 데이터 서비스를 위임받음
- 업무단위, 트랜잭션 단위 로서 서비스를 담당함
- 서비스는 Repository (DAO: Data Access Object) 로 부터 데이터를 제공받음
- Repository 역할
================================================================================
- C, Service, Repository 에 @Component 를 붙일 수 있음
- 의미론적으로 다음이 추천됨
- C: @Controller
- Service: @Service
- Repository: @Repository
================================================================================
- NewlecExam 클래스는 Entity 에 해당됨
- Entity 와 Model 클래스는 일반적으로 @Component 붙이지 않음
- 직접만드는 클래스말고, 외부라이브러리 클래스도 있음
- 여기에는 어노테이션 못 붙임