스프링 간단한 개념
스프링부트 개념 정리 1~3강
-
프레임워크
- 틀안에서 동작
-
오픈 소스
- 내부를 뜯어 고치는 게 가능
- IoC 컨테이너 가진다. (Inversion of Controll) 제어의 역전
- 스프링의 핵심
- 주도권을 스프링에게 빼앗겼다.
- 클래스-> 설계도
- 오브젝트->실체화가 가능한 것
- 인스턴스->실체화가 된 것
- 스프링이 수많은 오브젝트들을 스캔을 해서 자기가 이 객체들을 띄움 heap 메모리에 올려줌. IoC
- DI Depndency Injection 의존성 주입
- 이제는 스프링이 스캔해서 메모리 띄워서 내가 객체를 관리 안함.
- 내가 원하는 모든 곳에서 가져와서 사용가능
- 엄청나게 많을 필터 가짐
- 스프링 자체 필터 사용
- 톰캣 필터 web.xml->스프링 컨테이너 필터 인터셉터(AOP)
- 엄청나게 많은 어노테이션 가짐
- 컴파일 체킹
- 어노테이션 (주석)은 컴파일러가 체킹할 수 있게 힌트를 주는 주석
- 컴파일러가 무시하지 않음
- @override 컴파일 할 때
- 확인해야 겠네 판단
- 어노테이션 (주석)은 컴파일러가 체킹할 수 있게 힌트를 주는 주석
출처:https://youtu.be/mAFLNA9MYg8
- 스프링에서는 어노테이션을 통해 객체 생성
- @Component
- 클래스 메모리에 로딩
- 스프링이 스캔 읽어서 힙 메모리에 올림
- @Autowired
- 로딩된 객체 해당 변수에 집어 넣어
- 읽은 객체를 선언하고 위에 어노테이션을 넣으면
- 분석(리플렉션) 메서드, 필드, 어노테이션 체킹함
- 있다면 무엇인가를 해라 설정가능
- 떠있지 않다면 그냥 Null 들어가고
- 같은 타입의 데이터 있으면 메모리에 있는 데이터 넣음
- DI임 의존성 주입
- 어노테이션 (주석 힌트), 리플렉션(분석하는 기법->런타임시 분석)
- @Component
- 컴파일 체킹
- MessageConverter를 가지고 기본값은 현재 Json이다.
- 중간언어 : Json
- 자바 오브젝트를 JSON을 변경해주는 MessageConverter : Jackson 라이브러리
- 버퍼드리더, 버퍼드라이터 쉽게 사용
- 8비트->1바이트 일반적인 프로그래밍 통신의 최소 단위
- 논리적으로 부르는 말
- 1 바이트 = 하나의 문자
- 유니코드 UTF-8 3바이트 통신
- 바이트 스트림 : 1바이트 8비트
- InputStream 스트림
- 바이트를 읽음
- 받은 데이터를 char로 받아야함
- 복잡하니 InputStreamReader 문자하나
- 배열로 여러개의 문자 받을 수 있긴 하나 배열은 크기가 정해져 있음
- 배열이 작으면 나머지 문자가 버려짐
- 보내진 데이터 적으면 낭비됨
- 버퍼드 리더로 감싸야함
- 가변 길이의 문자를 받을 수 있다.
- InputStream 스트림
- request.getReader()
- 버퍼드라이터, PrintWriter rint(), println()
- 전송단위가 가변길이의 데이터를 쓰게 해줌
- @ResponseBody->버퍼드 라이터 존재
- @RequestBody->버퍼드 리더 존재
- 8비트->1바이트 일반적인 프로그래밍 통신의 최소 단위
- 스프링은 계속 발전 중
댓글남기기