스프링 - 입문편 강의
스프링 프레임워크란?
스프링 프레임워크란 자바 플랫폼을 위한 오픈소스 프레임워크로서, 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공한다.
Spirng Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리한다. 객체의 생성 및 소멸 그리고 라이프 사이클을관리하며 언제든 Spring 컨테이너로 부터 필요한 객체를 가져와 사용할 수 있습니다.
이는 Spirng이 IOC 기반의 Framework임을 의미한다.
스프링 서버가 클라이언트에게 리턴해주는 값의 종류
1. 정적 컨텐츠
resource/static에 파일 저장하면 서버에서 작업을 수행하지 않고, 저장된 정적파일을 바로 웹 브라우저에 내려준다
2. 스프링 mvc + 템플릿 엔진
현재 가장 많이 쓰이는 형태이다. 참고로 스프링부트는 템플릿 엔진으로 타임리프를 권장한다.
스프링 내부의 뷰 리졸버가 뷰를 찾아주고, 템플릿 엔진과 연결작업을 수행한다.
3. API 방식
@Responsebody : 메소드에서 리턴되는 값은 View 를 통해서 출력되지 않고 HTTP Response Body 에 직접 쓰여진다.
API방식에서는 @Responsebody를 사용 => ViewResolver대신에 HttpMessageConverter가 동작한다.
단순문자는 StringHttpMessageConverter가 동작하고, 객체가 들어오면 MappingJackson2HttpMessageConverter가 동작한다. => 객체를 JSON형태로 바꾼다 => JSON을 요청 클라이언트한테 보내준다
스프링 빈 등록방법 2가지
@ComponentScan에 자동등록 / 자바코드로 직접 스프링 빈 등록 (@Bean 이용)
@ComponentScan에 자동등록
@Controller => @Component를 포함하고 있기 때문에 스프링이 동작할때 스캔된다. 그러면 스프링컨테이너에 빈으로 등록 됨 =>@Service 또한 내부에 @Component를 포함하고 있다. => 내부에 rnew 키워드 사용해서 서비스를 계속 새로만들어서 메모리를 낭비하지 말고, , 컨트롤러의 생성자를 만들고 @Autrowired 어노테이션을 사용한다. => 스프링이 시작될 때 컨트롤러와 서비스가 연결된다. 이것이 생성자를 통한 DI ! (Repository에도 똑같이 @Repository 사용해준다)
- 자바코드로 직접 스프링 빈 등록
Config 클래스를 따로 만들고, @Configuration 어노테이션을 추가해준다. 그리고 수동으로 @Bean으로 등록해준다.
※ 실무에서는 컨트롤러,서비스,리파지토리,서비스등 정형화된 코드는 컴포넌트 스캔을 사용하고, 그렇지 않은 코드는 수동으로 빈 등록을 해준다.
AOP(Aspect Oriendted Programming)
공통관심사항과 핵심관심사항을 분리한다. @Aspect 어노테이션 필요.
정형화된 repository, service등은 어노테이션을 이용해서 컴포넌트 스캔으로 자동 등록하는게 낫지만 AOP같은 경우 수동등록해서 Congfig파일에 명싷해 두는게 좋다. 적용 범위는 @Around 어노테이션을 사용한다
스프링 입문편 강의를 빠르게 한번 다시 훑어 보면서, 처음 입문편을 봤을 때는 정말 무슨소린지 하나도 모르겠어서 씁쓸했는데 이제 대부분의 내용이 다 아는 내용이라서 기분이 좋았다. 하지만 자바 8의 문법공부의 필요성이 매우 느껴졌다. 그래도 입문편은 이제 다시 보지 않아도 될 것 같다.