https://hyunsb.notion.site/f10223c93a294ddb8ccc081f4d5166dd
스프링이란?
■ 스프링은 프레임워크
(Framework) 이다.
■ 스프링은 오픈소스
(Open Source)이다.
- 소스코드가 공개되어 있다. 즉, 뜯어 고칠 수 있다.
⭐스프링은 IoC
(Inversion of Control, 제어의 역전) 컨테이너를 가진다.
- 주도권이 스프링에게 있다.
- 사용자가 생성한 객체를 스프링이 직접
Heap
메모리 영역에 저장하고, 관리한다. - 생성된 객체는 딱 한번만 Heap에 저장되고, 한 객체를 공유하여 사용한다. (
싱글턴
)
⭐스프링은 DI
(Dependency Injection, 의존성 주입)를 지원한다.
- 사용자가 원하는 모든 클래스의 메서드에서 스프링이 관리하는 객체를 가져와서 사용할 수 있다.
- IoC를 통해 저장된 객체를 DI를 통하여 사용 가능
■ 스프링은 엄청나게 많은 필터(인터셉터
, Interceptor)를 가지고 있다.
- 서버로 들어온 요청을 핸들러로 도달하기 전 추가 작업을 진행할 수 있는 것 (권한 확인 등)
- 스프링자체 필터 사용, 필터를 선택하여 사용, 필터를 직접 생성하여 사용 가능
- Tomcat이 가지고 있는 필터(filter) - web.xml
- Spring 컨테이너가 가지고 있는 인터셉터(Interceptor) - AOP?
■ 스프링은 엄청나게 많은 어노테이션
을 가지고 있다. (리플렉션, 컴파일체킹)
- 어노테이션 (주석 + 힌트) - 컴파일러가 인식하여 컴파일 체킹
- 스프링에서는 어노테이션을 이용하여 객체 생성 (@Controller, @Bean , .. )
- 어떤 클래스를 스캔할 때 어노테이션을 활용하여 분석하는 기법 -
리플렉션
- 메서드, 필드, 어노테이션을 런타임시 분석
■ 스프링은 MessageConverter
를 가지고 있다. 기본값은 현재 Json이다.
- Java Object를 Json 데이터로 변경하는 기능 (반대로도 작동)
■ 스프링은 BufferedReader 와 BufferedWriter를 쉽게 사용할 수 있다.
- 가변길이의 문자를 받을 수 있다. InputStreamReader의 단점 보완
- @RespenseBody - BufferedWriter
- @RequestBody - BufferedReader
https://hyunsb.notion.site/f10223c93a294ddb8ccc081f4d5166dd
'Spring' 카테고리의 다른 글
[Srping Security] BCriptPasswordEncoder 해시 암호화 방법 (0) | 2023.03.02 |
---|---|
[Spring Boot] REST (0) | 2023.02.19 |
[Spring boot] 스프링부트 동작원리 - 2 (DispatcherServlet = FrontController + RequestDispatcher) (0) | 2023.02.16 |
[Spring Boot] 스프링부트 동작원리 - 1 (0) | 2023.02.16 |
[Spring Boot] JPA 개념정리 (0) | 2023.02.15 |