FrameWork
개발자들에게 틀에 맞춰 개발할 수 있게 해준다.
오픈소스
소스코드가 공개되어 있다. 즉 내부를 볼 수 있고, 뜯어 고칠 수도 있다. 또한 무료이다.
IoC 컨테이너를 가진다.
Inversion of Controll : 주도권이 스프링한테 있다.
class → 설계도
object → 실제화가 가능한 것
Instance → 실체화 된 것
오브젝트를 직접 heap 공간에 올리고(new 연산자), 참조변수가 가지고 있다.
스프링이 객체를 메모리에 올려준다.
DI를 지원한다.
Dependency Injection
원래는 개발자가 메모리에 직접 올려 관리하였지만, 스프링이 메모리에 올리고, 관리한다.
다른 클래스에서 사용이 가능하다.
많은 필터를 가지고 있다.
외부에서 내부로 들어오려면 권한이 필요한데, 즉 필터를 거쳐 걸러낸다.
스프링 자체가 필터 기능을 가지고 있다.
사용하지 않는 필터를 사용할 수도 있고, 직접 필터를 생성해서 사용할 수 도 있다.
외부를 톰캣, 내부를 스프링 컨테이너라고 생각하면 된다.
톰캣의 필터는 실제로 필터라 불리고, 필터의 기능을 가진 파일을 web.xml이라 한다.
스프링 컨테이너가 가진 필터는 인터셉터라고 불린다. (AOP 개념)
즉, 필터는 권한을 체크한다.
많은 어노테이션을 가지고 있다. (컴파일 체킹, 리플렉션)
어노테이션 (주석 느낌) ← 컴파일러가 무시하는게 아니라, 체킹할 수 있게 힌트를 주는 역할을 해 컴파일러가 무시를 하지 않는다.
ex ) @xxxxx
스프링은 어노테이션을 통해 객체를 생성한다.
@Comport → 클래스 메모리에 로딩
@Autowired → 로딩된 객체를 해당 변수에 집어 넣음
class B{
@Autowired
A a; // (분석<리플렉션>) -> 메서드, 필드, 어노테이션에게 지시 가능
}
즉 어노테이션은 주석 + 힌트 이다.
리플렉션은 런타임시 분석하는 기법이다.
MessageConverter를 가지고 있다. (기본값은 Json이다)
중간 데이터의 언어인 xml→Json을 통해 변환을 해준다.
즉 한국어→Json→영어 , 영어 → Json→ 한국어 / 자바 → Json → 파이썬 , 파이썬 → Json → 자바
요청(request) 및 응답(response) 할때 MessegeConverter가 작동한다.
BufferedReader 와 BufferedWriter를 쉽게 사용할 수 있다.
InputStream → 바이트 단위로 읽음
→ 문자로 변환 하기 위해서 InputStreamReader을 사용 → 문자 하나, 배열로 여러개의 문자를 받을 수 있다.
하지만 배열의 크기는 정해져 있다. 때문에 크게 잡으면 작은 데이터를 보낼 때 낭비가 된다.
그래서 BufferedReader을 사용해 가변 길이의 문자를 받는다.
BufferedWriter보다는 PrintWriter를 많이 사용한다. (Print(), Println())
즉 BufferedWriter은 전송 단위를 문자열(가변길이)를 사용할 수 있게 하는 것
스프링의 어노테이션 사용 @ResponseBody→ BufferedWriter 동작
데이터를 받을 때는 @RequestBody → BufferedReader 동작
(출처 : Youtube 데어 프로그래밍 )
https://www.youtube.com/channel/UCVrhnbfe78ODeQglXtT1Elw
데어 프로그래밍
getinthere@naver.com
www.youtube.com
'Back-end' 카테고리의 다른 글
Springboot 동작원리 (0) | 2021.07.19 |
---|---|
JPA 개념 (0) | 2021.07.18 |
SQL 문법(2) (0) | 2021.07.18 |
12 지네릭스, 열거형, 애너테이션 (1) (0) | 2021.07.17 |
11 컬렉션 프레임웍(7) (0) | 2021.07.11 |