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 붙이지 않음 - 직접만드는 클래스말고, 외부라이브러리 클래스도 있음 - 여기에는 어노테이션 못 붙임