TIL #11 220312

Subeeen·2022년 3월 12일
0

Today I Learned

목록 보기
11/18
post-thumbnail

스프링 기본 개념 정리!

1 . 스프링은 Framework이다.

프레임워크 틀 안에서 동작한다.

2 . 스프링은 오픈 소스

소스코드 공개되어 있어 내부를 뜯어고칠 수 있다. 새롭게 기여할 수 있다.

3 . 스프링은 IoC 컨테이너를 가진다.

IoC : Inversion of Controll, 제어의 역전이고 스프링의 핵심이 된다. 주도권이 스프링에게 있다.

  • class - 설계도
  • object - 실체화가 가능한 것
  • instance - 실체화된 것
    스프링이 객체를 오브젝트를 스캔해서 heap메모리에 띄운다.

4 . 스프링은 DI를 지원한다.

DI : Dependency Injection, 의존성 주입.
스프링이 스캔해서 오브젝트를 메모리에 띄웠기 때문에 내가 관리하는 게 아니라 스프링이 관리하는 것. 다른 클래스에서도 오브젝트를 그대로 사용할 수 있다.
싱글톤. 오브젝트가 메모리에 딱 한번만 뜨고, 그 오브젝트를 메모리에서 공유해서 사용할 수 있다.

5 . 스프링은 많은 필터를 가지고 있다.

필터 : 문지기. 필터에게 임무를 줄 수도 있고, 스프링 자체 기본 필터 기능들도 있으며 직접 필터를 만들어 사용할 수도 있다.
톰캣의 필터는 web.xml, 스프링 컨테이너의 필터는 Intercepter(AOP)이다.

6 . 스프링은 많은 어노테이션을 가지고 있다. (리플렉션, 컴파일체킹)

어노테이션 : 컴파일러가 힌트를 보고 체킹하는 주석.
스프링에서는 어노테이션으로 객체 생성이 가능하다.
ex) @Component, @Autowired... 스프링이 스캔 읽어서 객체 생성이 가능하다.
스프링이 리플렉션(분석하는 기법)을 통해 특정 클래스 내의 메소드, 필드, 어노테이션 등을 체킹할 수 있다. 리플렉션은 런타임 시에 일어난다. heap 메모리에 있는 같은 타입의 객체를 찾아서 DI가 이루어진다.

7 . 스프링은 MessageConverter를 가지고 있다. (기본값은 Json이다)

Json은 중간언어라고 생각하면 간단하다. 자바 오브젝트와 파이썬 오브젝트는 각자 달라서 주고받기 어렵다. Json으로 주고받으면 두 언어 간 소통이 가능하다.
MessageConverter가 요청과 응답 시 Json으로 바꿔주는 역할을 한다.

8 . 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.

BufferedReader를 사용하면 가변길이의 문자를 받을 수 있다. 데이터 요청을 BufferedReader로 읽으면 된다.
JSP에서는 request.getReader 함수를 쓰면 BufferedReader의 역할을 한다. 마찬가지로 데이터를 쓸 때는 Out이라는 내장객체를 쓰는데 이것이 BufferedWriter이다.
BufferedWriter는 Byte Stream으로 데이터를 전송할 때, 전송 단위가 문자열로 가변길이의 데이터를 쓰게 해 주는 클래스다.

스프링에서는
@ResponseBody 어노테이션을 쓰면 BufferedWriter가 동작하고,
@Requestbody 어노테이션을 쓰면 BufferedReader가 동작한다. 그래서 전송한 데이터를 읽을 수 있다.

profile
백엔드 개발 공부 중!

0개의 댓글