해당 게시물은 이 강의를 보고 제작하게되었습니다.
※ Spring 이란?
1. 프레임워크이다.
Framework 란?
- 말 그대로 직역하면 (Frame)틀 안에서 (work)동작하는 것입니다.
- 프레임워크는 정해진 틀로 구성을 해야됩니다.
2. 오픈 소스이다.
오픈소스 란?
- 무료로 소스코드가 공개되어있는 코드입니다.
- 이러한 오픈소스를 공개하며 여러 개발자들이 수정하며 개발할 수 있게됩니다.
3. IoC 컨테이너를 가진다.
IoC 란
- Inversion of Control 의 약자로 직역하면 제어 의 반전입니다.
- 이 뜻은 주도권이 스프링에게 있다는 것입니다.
- 개발자가 Object 를 메모리 공간에 할당 하면
- 그 주소는 해당 object 가 가지고 있지만 각각에 메소드가 관리하게 된다.
- 그러나 Spring은 모든 Object를 scan해서 각 메모리 공간에 할당을 하고 관리를 합니다.
- 이것을 IoC라고 합니다.
IoC Container 란
- 모든 작업을 사용하는 쪽에서 제어하게 되면서 IoC컨테이너에서 제어하게 되는데,
기본적으로 컨테이너는 객체를 생성하고 객체간의 의존성을 이어주는 역할을 합니다.
4. DI 를 지원한다.
DI 란
- Dependency Injection 의 약자로 의존성 주입이라고합니다.
- 메모리 공간에 할당된 객체를 가져와 사용하는 것을 DI라고 합니다.
5. 많은 필터를 가지고 있다.
필터 란?
- 필터 J2EE표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공합니다.
- 즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹컨테이너에 의해 관리가 되므로 디스패처 서블릿으로 가기 전에 요청을 처리하는 것입니다.
인터셉터 란?
- 필터와 달리 Spring이 제공하는 기술로써, 디스패처 서블릿(Dispatcher Servlet)이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공합니다.
- 즉, 웹 컨테이너에서 동작하는 필터와 달리 인터셉터는 스프링 컨텍스트에서 동작을 하는 것입니다.
6. 많은 어노테이션을 가지고 있다. (리플렉션, 컴파일체킹)
어노테이션 이란?
- Annotation은 Java5부터 새롭게 추가된 문법요소로, 사전적 의미는 주석이라는 의미를 가지고 있지만
’//‘와 같은 주석과 다르게 컴파일러가 무시하지 않습니다.
- 자바에서 사용될 때의 Annotation은 코드 사이에 주석처럼 쓰여서 특별한 의미를 부여합니다.
- 컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법입니다.
- 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)라고 볼 수 있습니다.
리플렉션 이란?
- 어떤 해당 클래스의 메소드, 필드, 어노테이션 등 모든 것을 분석하는 것입니다.
- 이는 런타임시 수행됩니다.
7. MessageConverter를 가지고 있다. 기본값은 현재 Json이다.
MessageConverter 란?
- Object를 전송할 때 josn, xml 등의 데이터 형식으로 변형 해주는 것입니다. ex) jackson
- 요청하거나 응답할 때 실행됩니다.
8. BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.
- @ResponseBody 어노테이션으로 BufferedWriter를 쉽게 사용 할 수있습니다.
- @RequestBody 어노테이션으로 BufferedReader를 쉽게 사용 할 수있습니다.