전정프 - 13장 스프링
| topics | 300-백엔드개발 301 Spring |
| types | 이론 학습 |
| contexts | 학교 |
| tags |
스프링 프레임워크 특징
스프링 부트
IoC, DI, AOP
실습 13.2, 13.3
스프링 프레임워크
특징
- 경량 컨테이너
- 생명주기를 관리
- 제어의 역전 지원
- 제어권이 프레임워크에 있음, 필요에 따라 사용자 코드 호출
- 의존성 주입 지원
- 관점지향 프로그래밍 지원
제어의 역행(IOC)
- 기존
- 프로그램 시작되는 곳 필요한 객체 생성
- 생성된 객체의 메서드 호출
- 스프링
- 컨테이너가 객체를 관리, 제공
- 코드에서 객체 생성 ㄴㄴ
특징
- 객체 생성 선택에 관여하지 않고 어떻게 사용되는 지 알 수없음
- 제어권한을 위임받은 객체(=컨테이너)에 의해 만들어지고 사용됨
의존성 주입(DI)
IoC 구현 방법으로 DI와 DL이 있음
- DI : 의존 관계를 Bean설정에 기반으로 컨테이너가 자동으로 연결해줌
- @Autowired 이용해서 빈 주입
- DL : 컨테이너에서 제공하는 API를 이용하여 직접 Bean을 찾음
- 의존성 커지고 코드 많아져서 ㄴㄴ
관점지향 프로그래밍(AOP)
- 횡단 관심사 분리를 허용함으로써 모듈성을 증가시키는 것이 목적
- Advise로 정의 : 반복되는 추가 동작을 정의
- Pointcut : 어떤위치에 수행할 것인지 정의
스프링 부트
- 스프링을 빠르고 간편하게 실행할 수있게해줌
- 별도 설치없이 웹어플리케이션 구동 가능
스프링 vs 스프링부트
구조
- 리액티브 스택
- 비동기 논블로킹 I/O 구조 사용
- 리액티브 프로그래밍
- 비동기 I/O 기반
- 데이터 흐름과 변화 전파에 중점을 둔 프로그래밍
- 서블릿 스택
- 동기 블로킹 I/O 구조 사용
- 하나의 요청 하나의 스레드.
- 동기 블로킹 I/O 구조 사용
WebMVC
- 모델과 뷰는 코드 그대로 사용가능할 정도로 유연한 구조
- 모델은 Spring Data JPA 사용하면 편함
- 뷰는 JSP에 대한 종속 없음.
- MVC 기반 웹개발과 구조적으로 동일
- 컨트롤러
- 직접구현 ㄴㄴ 특정 요청에 대한 처리 메서드만 작성하면 됨
- @Controller : 동작할 클래스 의미
- @RequetMapping : 요청 매핑
- get /web/hello에 동작하는 메서드

RestController
- REST API 구현하기 위해 사용하는 모듈
- JAX-RS 보다 간결함
- 리턴 타입으로 사용하면 자동으로 json변환(JAX-RX도 같음)
- hello( ) 메서드: /api/hello?msg=Welcome
hello2( ) 메서드: /api/hello/Welcome
실습
MVC 컨트롤러 구현
- 컨트롤러
@ResponseBody : 별도의 뷰가 아닌 리턴값을 직접 HTTP 응답 보디에 출력함
데이터를 포함한뷰 포워딩을 위해 Model객체추가

- 뷰

RestController구현