[1일차] SpringBoot 란?

Woozy9ucci·2022년 10월 21일
2

SpringBoot

목록 보기
1/1

SpringBoot

스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡한 편이다.
이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 스프링 부트다

프레임워크 이다

  • 만들어 놓은 틀 안에서 개발한다면 좋은 프로그램을 만들 수 있다.

오픈소스이다

  • 소스코드가 공개되어있다.
  • 내부를 뜯어볼 수 있고 고칠 수 도 있다.

IoC 컨테이너를 가지고 있다.

제어의 역전 (Inversion of Controll)

  • 인스턴스 생성부터 소멸까지의 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다.
  • 객체 관리 주체가 프레임워크(Container) 가 되기 때문에 개발자는 로직에 집중할 수 있다.

Di 를 지원한다

의존성 주입 (Dependency Injection)

  • 스프링이 관리하는 객체를 내가 원하는 모든곳에 가져와 사용할 수 있다.
  • SingleTone(하나의 인스턴스를 공유)

엄청나게 많은 필터를 가지고 있다

  • 필터
    클라이언트 요청이 서블릿으로 가기 전에 먼저 처리할 수 있도록 톰캣에서 지원해주는 기능(web.xml)
  • 인터셉터
    필터를 거쳐 스프링 컨테이너를 통과할 때 입국 심사

엄청나게 많은 어노테이션을 가지고 있다 (리플렉션, 컴파일체킹)

  • 어노테이션
    컴파일러가 컴파일 시 무언가를 체킹할 수 있게 힌트를 주는 주석 ex)@Override
    스프링에서는 주로 어노테이션을 이용해서 객체를 생성한다
    ex)
    @Component
    ->클래스를 메모리에 로딩
    @Autowired
    -> 로딩된 객체를 해당 변수에 대입
  • 컴파일 체킹
    컴파일 시 어노테이션을 통해 힌트를 얻는다.
  • 리플렉션
    스프링이 스캔 할 때 클래스에 어떤 메소드, 필드, 어노테이션이 있는지 파악하고 무엇인가를 하도록 설정할 수 도 있음 (https://ebabby.tistory.com/4)
    ex) 리플렉션을 통해 아래 클래스를 분석 할 때 A와 동일한 타입의 객체가 heap에 있는지를 확인하고 없다면 null 을 있다면 해당 객체를 주입한다 -> DependencyInjection
Class B {
     @Autowired
     A a;
}

MessageConverter를 가지고 있다

언어1 <-> Json <-> 언어2
MessageConverter : defalt = Jackson
자바와 중간언어(Json) 사이의 통역사

BufferedReader와 BufferdWriter를 쉽게 사용할 수 있다

0개의 댓글