스프링 부트 또한 위 사진과 같이 jsp에서 그렇게 열심히 공부했던 MVC Frame Work를 쓴다.
다만, 차이점은 jsp에서 MVC Frame Work로 개발할땐 FrontController(Dispatcher Servlet)를 직접 만들고 , 일일이 requestUrl을 switch문으로 비교하며 직접 url맵핑을 해주는 등 기초 작업 (환경설정 등) 이 모두 개발자의 몫이었다면 Spring Boot는 이 모든걸 직접 해준다. 즉, 개발자가 정말 개발에만 집중할 수 있는 환경을 제공해준다!
Spring Boot를 사용하여 Spring스럽게 개발을 하기 위해선 반드시 알아야 하는 개념이 있는데, 바로 IoC와 DI이다.
개발자가 프레임워크의 기능을 호출하는 형태가 아니라 프레임워크가 개발자의 코드를 호출하기 때문에, 개발자는 전체를 직접 구현하지 않고 자신의 코드를 부분적으로 "끼워넣기"하는 형태로 구현할 수 있다.
프레임워크가 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.
객체간의 의존성이 존재할 경우 개발자가 직접 객체를 생성하거나 제어하는 것이 아니라, 제어반전에 의하여 특정 객체에 필요한 다른 객체를 프레임워크가 자동으로 연결시켜주는 것을 말한다.
개발자는 자신에게 필요한 객체를 직접 할당하지 않고, 인터페이스를 통해 선언한 객체를 스프링 프레임워크에 의해 주입받아 사용할 수 있기 때문에 비즈니스 로직에만 집중할 수 있다.
개발자는 객체를 선언만 할 뿐, 할당은 프레임워크에서 자동으로 이루어진다.
스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부른다.
개발자는 객체를 생성하고 소멸할 수 있는데, 스프링 컨테이너가 이 역할을 대신해 준다.
즉, 제어의 흐름을 외부에서 관리하는 것. 또한, 객체들 간의 의존관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 준다.
스프링은 실행시 객체들을 담고있는 Container가 있다.
스프링은 스프링 컨테이너에 스프링 빈(객체)을 등록할 때, 기본으로 싱글톤으로 등록한다.
두더지잡기게임 만들어주세요