스프링 웹 개발
정적컨텐츠
- hello-static.html 작성 후 실행
- 웹 브라우저-> 내장톰캣 서버 -> 스프링 컨테이너(hello-static)관련 컨트롤러X -> resource:static/hello-static.html-> 웹브라우저 hello-static.html 반환
MVC와 템플릿 엔진
- MVC :Model, View, Controller
- 이전 정적 컨텐츠와는 다르게 스프링 컨테이너 내 helloController 존재 -> hello-template 리턴 -> ViewResolver에서 템플릿 엔진 처리 후 HTML 반환
API
- @ResponseBody를 사용하면 ViewResolver를 사용하지 않음
- ResponseBody 문자 반환 - HTTP의 BODY에 문자 내용을 직접 반환, 객체 반환 - 객체가 JSON으로 변환됨
- 기존의 ViewResolver 대신에 HttpMessageConverter가 동작
웹 애플리케이션 계층 구조
컨트롤러 -> 서비스 -> 리포지토리 -> DB
- 컨트롤러,서비스,리포지토리는 모두 도메인에 접근함
- 컨트롤러: 웹 MVC의 컨트롤러 역할
- 서비스: 핵심 비즈니스 로직 구현
- 리포지토리: DB에 접근, 도메인 객체를 DB에 저장하고 관리
- 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 DB에 저장하고 관리됨
DI(Dependency Injection)
- constructor(생성자)에 @Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 이렇게
객체 의존관계를 외부에서 넣어주는 것을 DI (Dependency Injection), 의존성 주입이라 한다.
스프링 빈을 등록하는 2가지 방법
- 컴포넌트 스캔과 자동 의존관계 설정
- 자바 코드로 직접 스프링 빈 등록하기
- @Component 에노테이션이 있으면 스프링 빈으로 자동 등록된다. @Controller,@Service,@Repository는 @Component를 포함하고 있다.