스프링 기본 개념 정리!
프레임워크 틀 안에서 동작한다.
소스코드 공개되어 있어 내부를 뜯어고칠 수 있다. 새롭게 기여할 수 있다.
IoC : Inversion of Controll
, 제어의 역전이고 스프링의 핵심이 된다. 주도권이 스프링에게 있다.
DI : Dependency Injection
, 의존성 주입.
스프링이 스캔해서 오브젝트를 메모리에 띄웠기 때문에 내가 관리하는 게 아니라 스프링이 관리하는 것. 다른 클래스에서도 오브젝트를 그대로 사용할 수 있다.
싱글톤. 오브젝트가 메모리에 딱 한번만 뜨고, 그 오브젝트를 메모리에서 공유해서 사용할 수 있다.
필터 : 문지기. 필터에게 임무를 줄 수도 있고, 스프링 자체 기본 필터 기능들도 있으며 직접 필터를 만들어 사용할 수도 있다.
톰캣의 필터는 web.xml, 스프링 컨테이너의 필터는 Intercepter(AOP)이다.
어노테이션 : 컴파일러가 힌트를 보고 체킹하는 주석.
스프링에서는 어노테이션으로 객체 생성이 가능하다.
ex) @Component, @Autowired... 스프링이 스캔 읽어서 객체 생성이 가능하다.
스프링이 리플렉션(분석하는 기법)을 통해 특정 클래스 내의 메소드, 필드, 어노테이션 등을 체킹할 수 있다. 리플렉션은 런타임 시에 일어난다. heap 메모리에 있는 같은 타입의 객체를 찾아서 DI가 이루어진다.
Json은 중간언어라고 생각하면 간단하다. 자바 오브젝트와 파이썬 오브젝트는 각자 달라서 주고받기 어렵다. Json으로 주고받으면 두 언어 간 소통이 가능하다.
MessageConverter
가 요청과 응답 시 Json으로 바꿔주는 역할을 한다.
BufferedReader
를 사용하면 가변길이의 문자를 받을 수 있다. 데이터 요청을 BufferedReader로 읽으면 된다.
JSP에서는 request.getReader 함수를 쓰면 BufferedReader의 역할을 한다. 마찬가지로 데이터를 쓸 때는 Out이라는 내장객체를 쓰는데 이것이 BufferedWriter이다.
BufferedWriter
는 Byte Stream으로 데이터를 전송할 때, 전송 단위가 문자열로 가변길이의 데이터를 쓰게 해 주는 클래스다.
스프링에서는
@ResponseBody
어노테이션을 쓰면 BufferedWriter가 동작하고,
@Requestbody
어노테이션을 쓰면 BufferedReader가 동작한다. 그래서 전송한 데이터를 읽을 수 있다.