[TIL] 2022.11.26

rara_kim·2022년 11월 26일
0

TIL

목록 보기
19/25

오늘의 키워드

💡@Component

IoC, 스프링이 @Component 어노테이션이 붙은 클래스를 읽어서 객체로 만들어 heap메모리에 로딩한다.

💡@Autowired

로딩된 객체를 해당 변수에 집어 넣는다.
스프링이 만든 객체중에 해당 타입의 객체가 없다면 null을 넣는다.

@Autowired  
A a;          <- heap에서 A타입에 해당하는 객체가 있는지 확인후 넣어준다(DI)

💡리플렉션

스프링이 클래스를 스캔할 때, 해당 클래스에 어떤 메서드/필드/어노테이션이 있는지 런타임시 분석하는 기법이다.

💡메시지 컨버터

자바 프로그램에서 요청을 보낼때 객체를 JSON 형태로 변환시켜주는 것을 메시지 컨버터라고 한다.
요청만이 아니라 상대방에게서의 응답받을 때도 상대방 객체를 JSON으로 변환을 해준다.
(스프링은 기본적으로 JSON 형태를 사용)

예를 들어, 아래와 같이 변환한다.
Java Object  ↔️  JSON  ↔️  Python Object


💡바이트(1Byte = 8bit)

통신의 단위, 컴퓨터끼리 소통을 위해 8bit씩 끊어 읽도록 함.
(영어 한 문자:8bit, 한글 한 문자: 16bit)

  • UTF-8: 전세계가 공통적으로 데이터 통신을 하기 위한 Character 인코딩(3Byte)

💡@RequestBody, @ResponseBody

  • @RequestBody:  이 어노테이션은 HttpRequest의 본문 requestBody의 내용을 자바 객체로 매핑하는 역할을 한다.
    해당하는 어노테이션이 붙어있는 메서드로 클라이언트의 요청이 들어왔을 때, DispatcherServlet에서는 먼저 해당 HttpRequest의 미디어 타입을 확인하고, 타입에 맞는 MessageConverter를 통해 요청 본문인 requestBody를 통째로 변환해서 메서드로 전달해준다.

  • @ResponseBody: 이 어노테이션은 자바 객체를 HttpResponse의 본문 responseBody의 내용으로 매핑하는 역할을 한다.
    해당 어노테이션도 마찬가지로 return Type에 맞는 MessageConverter를 통해 return 하는 객체를 해당 타입으로 변환해서 클라이언트로 전달한다.

💡Persistance(영속성)

컴퓨터/프로그램이 종료되더라도 데이터가 사라지지않고 영구적으로 기록되는 것을 말한다.

💡JPA

  • 자바 프로그래밍을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스
  • 데이터를 생성한 프로그램의 실행이 종료되더라도 영구히 데이터를 기록할 수 있는 환경을 조성해 주는 것을 JPA라고 한다.
  • Java class와 DB의 데이터를 매핑해줌으로써 반복적인 CRUD를 줄여준다.

💡API(Application Programming Interface)

원하는 데이터를 가져오기 위해 지켜야할 약속이라고 할 수 있다.

  • Application:  프로그램
  • Programming:  프로그램을 만들기 위한 방법
  • Interface:  지켜야할 약속. 프로토콜과는 다르게 상하관계가 존재한다.

💡ORM(Object Relational Mapping)

클래스(Entity)를 만들어서 실행하면 데이터베이스에 테이블이 자동으로 생성되게 하는 기법을 ORM이라고 한다.

💡모델링

추상적인 개념을 현실세계로 뽑아내는 것을 말한다.
(예를 들어, 설계도를 가지고 건물을 지어 올리는 것.)


💡영속성 컨텍스트란?

Context란 대상에 대한 모든 정보를 가지고 있는 것을 말한다.
따라서, 영속성 컨텍스트란 자바가 데이터베이스에 저장해야하는 데이터의 "모든" 정보를 알고 있는 것을 뜻한다.
자바는 영속성 컨텍스트를 통해서 DB에 데이터를 저장하고 영속성 컨텍스트를 통해 데이터를 가져온다.
(데이터(자바 프로그램) ↔️ 영속성 컨텍스트 ↔️ DB)

만약 영속성 컨텍스트에 있는 데이터를 삭제하면 DB에 있는 데이터도 사라진다.(동기화)


💡Socket 통신

  • 연결이 지속되는 통신
  • 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다.
  • 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다.

💡HTTP 통신

Client가 요청(Request)이 있을 때만 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식.

💡톰캣

  • .jsp같은 동적자원을 요구받았을 때, .jsp -> 자바 -> 컴파일후에 .html 파일로 만들어서 아파치에게 돌려준다. 그러면 아파치가 그 파일을 응답으로 요청한 곳에 돌려준다.

💡웹서버

  • 정적인 자원을 요청받으면 응답해주는 서버.
  • 동적 자원을 요청받으면 톰캣에 요청한다.

💡서블릿 컨테이너(톰캣)

  1. request(요청) 받아 Java관련이면 서블릿 컨테이너를 호출한다.
  2. 서블릿 객체 생성(최초 요청시, 그 이후부터는 객체 재사용)
  3. init() 메소드 호출
  4. 스레드를 생성하여 service() 메소드 호출
  5. 필요한 메소드를 확인하고 호출(GET/POST/PUT/DELETE)
  6. response 후 스레드는 재사용을 위해 남겨둔다.
  7. 톰캣은 스레드를 20개까지만 생성 가능하다.
    그 보다 요청이 많은 경우엔 대기하고 있다가 response가 끝난 스레드를 재사용한다.

오늘은

본격적으로 주특기 주차가 시작되었다.
Spring 입문 강의를 들으며 메모한 오늘의 키워드들을 위와 같이 정리했다.
전에 공부했을 때는 실습 위주로 무작정 코드를 치기 급급했었기에 뭐가 뭘 말하는지 잘 모르고 넘어간 부분이 많았는데 오늘 공부하면서 부족한 부분이 조금이나마 채워진 것 같다.

공부량이 갑자기 많아져서 제대로 시작하기도 전에 지치는 느낌인데... 힘내자!!🔥

profile
느리더라도 꾸준하게

0개의 댓글