본문

Spring vs Spring Boot

반응형

인터넷에 Spring과 Spring Boot의 차이점을 검색하면 잘 정리된 글들을 확인할 수 있다.

필자는 이를 바탕으로 크게 두개의 주제로 간략하게 정리했다.

첫번째, 두 프레임워크 등장 이유

두번째, 기능적 측면에서 두 프레임워크의 차이점


💡 첫번째, 두 프레임워크 등장 이유 - 무엇을 해결하고자 등장했는가

1. Spring Framework

Spring Framework - 개발자가 개발에만 집중할 수 있도록 설계된 프레임워크

Spring Framework를 이용해서 엔터프라이즈 애플리케이션을 보다 쉽게 만들 수 있다. (DI, AOP 등)

P.S. 엔터프라이즈 애플리케이션: 대규모 데이터 처리, 트랜젝션을 처리하는 기업용 애플리케이션을 의미

개발자들이 애플리케이션을 조금 더 쉽게 구현할 수 있도록 도와주는 것

해결하고자 하는것

a) Dependency Injection(DI) - 의존성 주입
- 객체 간 결합을 느슨하게 만듦
- 코드 재사용성 증가 및 단위테스트가 용이

b) 중복된 코드 제거
- ex. JDBC template
- 비즈니스 로직에만 집중 가능

c) 다른 프레임워크와의 통합
- ex. JUnit & Mockito for Unit Testing
- 여러 훌륭하게 제공되는 프레임워크를 통해 해결하고자 하는 문제를 높은 품질로 해결

 

2. Spring Boot

Spring Boot - 개발자가 '더욱' 개발에만 집중할 수 있도록 설계된 프레임워크

Spring Framework는 기능이 많은만큼 환경설정이 복잡한 편이다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 Spring Boot이다. Spring Boot는 Spring를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 Spring을 활용할 수 있도록 돕는다. (최소한의 설정으로 스프링 플랫폼과 서드파티 라이브러리를 사용할 수 있도록 하고 있다.)

→ 스프링 프레임워크를 더 쉽게 사용할 수 있도록 도와주는 것

해결하고자 하는것
a) Auto Configuration 자동 실행
b) 쉬운 의존성 관리
c) 내장 서버

💡 두번째, 기능적 측면에서 두 프레임워크의 차이점

1. Spring

POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 한다.

-. Java Application을 개발하는데 필요한 하부구조(Infrastructure)를 포괄적으로 제공한다.
-. Spring이 하부구조를 처리하기 때문에 개발자는 Application 개발에 집중할 수 있다.
-. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.

 

2. Spring Boot

스프링부트는 빠른시간에 애플리케이션이 제품이 될 수 있도록 하는 것을 목표로 한다. 
-. Actuator: 애플리케이션을 고수준에서 모니터링하고 추적 할 수 있도록 해준다. 
-. Embedded Server Integrations: 서버가 애플리케이션에 통합되기 때문에 우리는 서버에 설치되는 별도의 애플리케이션 서버를 가질 필요가 없다. 
-. Default Error Handling

 

스프링 부트 starter dependency만 추가해주면 바로 API를 정의하고, 내장된 톰캣이나 제티로 웹 애플리케이션 서버를 실행할 수 있다.  실행환경이나 의존성 관리 등의 인프라 관련 등은 신경쓸 필요 없이 바로 코딩을 시작하면 된다.

 

Spring Boot Starter 프로젝트 옵션들

스타터 프로젝트들은 특정 애플리케이션 개발을 빠르게 시작할 수 있도록 도와준다.

-. spring-boot-starter-web-services: SOAP Web Services
-. spring-boot-starter-web: Web and RESTful applications 
-. spring-boot-starter-test: Unit testing and Integration Testing 
-. spring-boot-starter-jdbc: Traditional JDBC 
-. spring-boot-starter-hateoas: Add HATEOAS features to your services 
-. spring-boot-starter-security: Authentication and Authorization using Spring Security 
-. spring-boot-starter-data-jpa: Spring Data JPA with Hibernate 
-. spring-boot-starter-cache: Enabling Spring Framework’s caching support 
-. spring-boot-starter-data-rest: Expose Simple REST Services using Spring Data REST 

 

 Spring Boot 의 다른 목표

개발이나 유지보수에 도움을 주는 몇가지 스타터들이 있는데 다음과 같다.

 

-. spring-boot-starter-actuator: 여러분의 애플리케이션 추적하거나 모니터링하는 등의 기능을 사용할 수 있도록 한다. 
-. spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat
: 내장된 서블릿 컨테이너를 선택할 수 있도록 해준다. 
-. spring-boot-starter-logging: logback 을 사용해서 로깅할 수 있도록 해준다. 
-. spring-boot-starter-log4j2: Log4j2 를 사용해서 로깅할 수 있도록 해준다.

 

💡 글을 마치며

Spring, Spring Boot는 라이브러리가 아닌 프레임워크이다. 단순히 코드를 제공하는 것이 아니라 프로그래밍 방법을 제공한다. 이렇게 프로그래밍 방법을 제공하고 개발자가 그에 맞추어 개발하는 방식은 어쩌면 너무 딱딱하고 획일화된 프로그램으로만 만들어 질 수 있다는 염려가 있다. 또한 개발자 프레임워크에서 지원/제공하지 않는 구조 또는 방식으로 개발하고자 한다면, 프레임워크를 뜯어고쳐야하는 비용이 만만치않게 들것이다.

 

하지만 특정 목적을 위한 프로그램을 만드는 데에 있어서 정형화된 방식은 효율성을 극대화 시켜준다. 웹 서비스 구축 경험이 없는 초보자도 Spring Boot를 기반으로 웹서비스 개발 한다면 정말 빠르고 간편하게 서비스를 만들어서 배포/운영까지 할 수 있다.

 

 


💎 Spring과 SpringBoot - 더 알아보기

http://blog.naver.com/PostView.nhn?blogId=sthwin&logNo=221271008423&parentCategoryNo=&categoryNo=50&viewDate=&isShowPopularPosts=true&from=search

 

Spring Boot vs. Spring MVC vs. Spring 의 비교

원제: Spring Boot vs. Spring MVC vs. Spring: How Do They Compare? 출처: https://dzone.com...

blog.naver.com


💡 참조

http://blog.naver.com/PostView.nhn?blogId=sthwin&logNo=221271008423&parentCategoryNo=&categoryNo=50&viewDate=&isShowPopularPosts=true&from=search

https://www.youtube.com/watch?v=OdpPvdB7qZY

https://www.youtube.com/channel/UC-mOekGSesms0agFntnQang

https://monkey3199.github.io/develop/spring/2019/04/14/Spring-And-SpringBoot.html

https://annajinee.tistory.com/20

반응형

공유

댓글