스프링과 스프링부트
정말 뭐가 다른걸까요?
결론부터 말씀드리면 크게 다를건 없습니다 ^^
일단 단어부터가 애매합니다. Spring & Spring Boot 라고 표현하기 보다는
Spring Framework & Spring Boot
라고 표현을 고치고 자세하게 무엇이 다른지 알아보겠습니다!
(복습도 할겸 개념부터 다시 잡아보면서 가지요 !)
Spring Framework ?
스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크입니다!
단어가 길어서 그냥 스프링! 이라고 불러서 다들 혼동이 있는거 같아요 허헣
WAS 동적인 웹페이지를 개발하기 위해 여러가지 서비스를 제공하고 있습니다
대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크 기반 기술이랍니다.
글 쓰면서 정보를 찾다가 저도 알게된 사실이네요 ㄷㄷ;;
특징
- DI (Dependency Injection) 의존성 주입
- IOC (Inversion Of Control) 제어의 역전
- 경량 컨테이너
- POJO (Plain Old Java Object) 프로그래밍
Spring Boot ?
스프링 부트는 스프링 프레임워크를 더 쉽게 이용하기 위한 도구 라고 생각할 수 있습니다!
저도 느꼈지만, 처음에 스프링 프레임워크 세팅만 몇시간을 하죠….
이렇게 여러가지 세팅해야되는 시간도 시간이지만 진입장벽도 있어서, 매우 간단하게 프로젝트를 설정할 수 있게 하는게
Spring Boot 입니다!
User ⇒ Spring Boot ⇒ Spring Framework
그렇죠….사실 스프링 부트랑 스프링 프레임워크는 개별이 아닌 합을 이루어서 동작하는 방식입니다!
(스프링부트 ⇒ 스프링부트 프레임워크 죠?….)
자 그렇다면 대체 어떤 점에서 스프링 부트가 좋길레 이렇게 많이들 쓰고있고, 넘어가는지 확인해볼까요??
Spring Boot의 주요 기능
- 스프링 부트는 임베드 톰캣(Embed Tomcat) 사용으로 톰캣을 따로 설치하거나 버전 관리할 필요 없음 (즉 스프링부트는 내장으로 톰캣 서버를 가지고있음)
2. 스프링 부트 starter를 통한 dependency 자동화
- 스프링 프레임워크는 각각의 dependency의 호환되는 버전을 일일이 개발자가 맞춰줘야 했음 ㅠ 하나의 dependency 버전 업그레이드 시, 다른 dependency 영향 (버전 관리의 어려움)
- 스프링 부트는 starter를 통해 dependency 관리
- 스프링 부트는 XML 설정 불필요
- 스프링 부트는 jar file을 이용해 자바 옵션만으로 손쉽게 배포 가능
이렇게 정리할 수 있을거 같네요! 아무래도 경량급 컨테이너로 관리하는 Spring 이라고는 하지만
여전히 기능은 계속해서 추가되고 많아지기에 Spring Boot라고 해서 쉬운거는 절대 아닙니다.
그렇지만 버전관리, 초반 세팅 (Dependency, @사용) 이 편해지고, 간단해졌기에 매우 편리해진것이죠!
기초적인 개념은 스프링과 다를게 없으니 이 점 주의해서 공부하면 될거같습니다 😂
💡 참고로 면접관이 물어보는 질문 중 하나가 “스프링과 스프링부트는 뭐에요? 뭐가달라요?”
라고 자주 물어본다고 합니다. 그러니 이번 기회에 좀 더 정확하게 개념을 잡고자 글을 쓰게 되었고, 확실하게 짚고 넘어가야할 부분은
“둘 다 프레임워크인데 스프링기반의 애플리케이션 개발을 좀 더 간편하고 쉽게 하기 위해 나온것이 스프링 부트이고
스프링 프레임워크는 기본적으로 MVC패턴을 사용하여 Model, View, Controller로 클라이언트의 요청을 처리하며,
스프링에서는 Dispatcher Servlet Controller가 제일 먼저 사용자의 요청을 받아 (그래서 Front Controller라고도 합니다) 요청에 따라 해당 비지니스 로직을 처리할 컨트롤러에게 요청을 보내고 요청을 받은 컨트롤러는 다시 요청한 데이터를 처리하는 로직이 있는 Model에게 보내서 데이터를 주고 받습니다.
이때 DispathcerServlet Controller는 요청 받은 url에 해당되는 View페이지를 찾기위해 ViewResolver에게 요청을 보내 해당되는 jsp파일의 경로와 파일명을 받게되고,
최종적으로 컨트롤러가 Model에게 요청하여 받은 데이터와 ViewResolver에게서 받은 뷰를 합쳐서 클라이언트에게 보여주게 됩니다.
이 많은 과정중에서 스프링은 초반 세팅과 추후에 세팅된 프레임워크의 버전을 관리하고 유지하기 까다로운 부분이 존재했는데, 스프링 부트가 대신해서 dependency 세팅, 톰캣서버 관리, 쉬운 배포 (jar.파일 배포 가능)을 해주게 되고 이것이 스프링 부트의 핵심 기능입니다.”
라고 정리할수 있겠네요??….
(ㅈ나 길어졌네 말이…..)
'Spring & Spring Boot' 카테고리의 다른 글
[Spring] @Autowired, @Inject, @Resource 차이점 정리 (1) | 2023.03.06 |
---|---|
Spring JPA? Java Presistence API 가 뭘까요 ! (0) | 2023.02.01 |
Spring Boot And Mybatis 연동하기 feat.MySQL (0) | 2023.01.17 |
Entity On Spring feat.JPA (0) | 2023.01.17 |
JSON을 많이 쓴다고?! on Spring Boot (0) | 2023.01.17 |