Spring Boot 개념 (Architecture , IoC , DI , Spring Container)

강태석·2022년 11월 23일

Spring

목록 보기
4/7

Spring Boot 개념 (Architecture , IoC , DI , Spring Container)

자 이제 스프링 부트 설치 , 설정 및 기본적인 폴더와 파일들도 알아봤으니 스프링 부트가 어떻게 작동하는지 알아보도록 하자!🔥

Spring Boot Architecture

스프링 부트 또한 위 사진과 같이 jsp에서 그렇게 열심히 공부했던 MVC Frame Work를 쓴다.

다만, 차이점은 jsp에서 MVC Frame Work로 개발할땐 FrontController(Dispatcher Servlet)를 직접 만들고 , 일일이 requestUrl을 switch문으로 비교하며 직접 url맵핑을 해주는 등 기초 작업 (환경설정 등) 이 모두 개발자의 몫이었다면 Spring Boot는 이 모든걸 직접 해준다. 즉, 개발자가 정말 개발에만 집중할 수 있는 환경을 제공해준다!

Spring Boot를 사용하여 Spring스럽게 개발을 하기 위해선 반드시 알아야 하는 개념이 있는데, 바로 IoCDI이다.


IoC 제어 역전 (Inversion of Control)

  • 개발자가 프레임워크의 기능을 호출하는 형태가 아니라 프레임워크가 개발자의 코드를 호출하기 때문에, 개발자는 전체를 직접 구현하지 않고 자신의 코드를 부분적으로 "끼워넣기"하는 형태로 구현할 수 있다.

  • 프레임워크가 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.

  • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.


DI 의존성 주입 (Dependency Injection)

  • 객체간의 의존성이 존재할 경우 개발자가 직접 객체를 생성하거나 제어하는 것이 아니라, 제어반전에 의하여 특정 객체에 필요한 다른 객체를 프레임워크가 자동으로 연결시켜주는 것을 말한다.

  • 개발자는 자신에게 필요한 객체를 직접 할당하지 않고, 인터페이스를 통해 선언한 객체를 스프링 프레임워크에 의해 주입받아 사용할 수 있기 때문에 비즈니스 로직에만 집중할 수 있다.

  • 개발자는 객체를 선언만 할 뿐, 할당은 프레임워크에서 자동으로 이루어진다.


Spring Container

  • 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부른다.

  • 개발자는 객체를 생성하고 소멸할 수 있는데, 스프링 컨테이너가 이 역할을 대신해 준다.

    즉, 제어의 흐름을 외부에서 관리하는 것. 또한, 객체들 간의 의존관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 준다.

  • 스프링은 실행시 객체들을 담고있는 Container가 있다.

  • 스프링은 스프링 컨테이너에 스프링 빈(객체)을 등록할 때, 기본으로 싱글톤으로 등록한다.


1개의 댓글

comment-user-thumbnail
2022년 11월 28일

두더지잡기게임 만들어주세요

답글 달기