Spring 기본개념

Goofi·2023년 7월 31일
0
post-custom-banner

Spring

IoC 컨테이너를 통해 bean들을 Singleton으로 관리하고 필요에 따라 DI해주는 프레임워크

  • 스프링은 프레임워크이다.
  • 스프링은 오픈소스이다.
  • 스프링은 IoC 컨테이너를 가진다.
  • 스프링은 DI를 지원한다.
  • 스프링은 엄청나게 많은 필터를 가지고 있다.
  • 스프링은 엄청나게 많은 어노테이션을 가지고 있다.
  • 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.
  • 스프링은 BufferdReader 와 BufferedWriter를 쉽게 사용할 수 있다.
  • 스프링은 계속 발전중이다.

Ioc(Inversion of Control) : Singleton으로 bean을 관리하는 Container
Singleton : 객체의 인스턴스를 한개만 생성되게 한다.
bean : 스프링 컨테이너가 관리하는 자바 객체
DI(Dependency Injection) : 인스턴스 생성시 IoC컨테이너에서 singleton으로 관리하고 bean들을 변수에 의존성 주입

Class → 설계도!
Object → 실체화가 가능한 것
Instance → 실체화 된 것

자바)

위 사진처럼 각각의 레퍼런스를 메소드가 관리한다. 이러한 문제점을 개선하기 위해 스프링이 등장했다.


스프링은 자동으로 heap메모리에 인스턴스를 만들어준다.

필터(=ex.문지기)

스프링 자체! 필터! 사용

톰켓에도 필터가 있다.
스프링 컨테이너에도 필터가 있다. 다른말로 인터셉터(AOP)라고 부른다.

@-어노테이션

컴파일체킹

어노테이션 (주석 + 힌트) <- 컴파일러 무시 X
//글 ~ (주석) <- 컴파일러 무시!


컴파일 할 때 어노테이션이 붙어있으니까 Animal이라는 부모가 run이라는 메소드를 가지고 있겠지 하면서 예상하고 확인한다.


Fly메소드가 없기 때문에 컴파일체킹 시에 에러가 발생한다.

스프링에서는!
어노테이션 객체 생성

MessageConverter

자바오브젝트를 누구가에게 전송할때 중간 데이터 JSON으로 컨버팅해주는 것이다.

요청뿐만아니라 응답받을때도 변환

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

  • bit 단위로 통신이 아니라 어떻게 하면 영어 한 문자로 표할 수 있을까?
  • 영어 한문자 8bit = 1byte = 2^8 = 256
  • 256가지 문자전송 가능
    ❗️한글은 최소 16bit가 필요하다

읽을 때는 8bit씩 끊어 읽으면 한 문자씩 받을 수 있다.

1바이트 : 통신 단위

프로그래밍에서는 바이트 통신을 많이 한다.

즉, BufferdWriter는 다시 얘기하자면 Byte Stream을 통하여 데이터를 전송할 때 데이터 전송단위가 문자열로 가변 길이 데이터를 쓰게 해주는 클래스이다.

하지만, 직접 구현할 필요없이 어노테이션을 제공한다.
@ResponseBody -> Bufferdwriter 동작
@RequestBody -> BufferdReader ehdwkr

profile
오늘보단 내일이 강한 개발자입니다!🧑🏻‍💻
post-custom-banner

0개의 댓글