[Spring]/Spring 정리

Spring 과 Spring Boot 의 차이

응파카 2022. 10. 9. 16:57

Python을 이용한 Django, Ruby를 이용한 Ruby on Rails, Javascript를 이용한 Node.js가 있듯이

Spring은 Java를 기반으로 하는 웹 어플리케이션 제작이 가능한 프레임워크이다.

 

IoC(제어의 역전)와 DI(의존성 주입), AOP(관점지향 프로그래밍) 등의 장점을 갖고 있다.

 

그럼 Spring Boot는 뭘까?

Spring Boot makes it easy to create stand-alone,
production-grade Spring based Applications that you can "just run".

"스프링부트로 [단순 실행]만 하면 되는 스프링 기반의 어플리케이션을 쉽게 만들 수 있다."

 

 

 

 

이와 관련해 다음의 이미지들이 정말 잘 와닿았다.


 

즉 Spring Boot는 Spring framework를 더 쉽게 이용할 수 있게 해주는 도구라고 볼 수 있다.

Spring은 많은 기능을 갖고 있지만 그 기능을 사용하기 위한 설정에 많은 시간이 걸린다.

세팅에 사용하는 시간과 에너지를 없애고

비즈니스, 서비스를 만들기 위한 프로그래밍에 집중하여 에너지를 쏟을 수 있게 많은 부분을 자동화 시킨것이 Spring Boot이다.

 

디테일한 차이점을 나열하자면 다음이 있다. 

 

 

- 스프링부트의 AutoConfiguration(자동설정) 기능

  • Embeded Tomcat을 사용한다.
  • 미리 설정되어있는 Starter 프로젝트를 통한 dependency 자동화 기능.
  • XML설정을 하지 않아도 된다. Java 코드를 통해 설정 가능하다.
  • jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다. (jar file이 클래스 패스에 있는 경우 스프링 부트는 Dispatcher Servlet으로 자동 구성된다)

 

- 모니터링 관리를 위한 Spring Actuator 기능

  • 서비스가 정상적으로 동작하는지 상태 모니터링 기능 제공

 


Embeded Tomcat

Spring Framework에는 tomcat이 내장되어있어 애플리케이션을 빌드하고 실행하는 것만으로 웹 애플리케이션을 서비스할수 있다. 즉, 따로 tomcat을 설치하거나 매번 버전을 관리해줘야 하는 수고로움을 덜어준다.

Embeded Tomcat이 없던 때는 서블릿 컨테이너로 외부 Tomcat을 설치하고 Java로 작성되어있는 웹 애플리케이션을 Tomcat에 포함시켜줘야했다.

서블릿과 서블릿 컨테이너에 대한 내용은 아래 링크에서 잘 정리해주신분이 계셔서 참고하여 이해했다.

 


starter를 통한 dependency 자동화

원래는 각자의 dependency들에 호환되는 버전을 하나하나 관리해주어야했고,

그렇게 하나의 버전을 관리하고 나면 다른 dependency까지 영향을 미치고... 호환성 체크를 하고나면 또 버전을 관리해야 하고.. 하는 수고가 있었다.

 spring boot starter dependency 를 사용하게 되면서 이러한 작업에 에너지를 쏟을 필요가 없게 되었다.

더보기
gradle을 통한 의존성 관리
dependency 추가만 해주면 된다

'[Spring] > Spring 정리' 카테고리의 다른 글

Builder 패턴과 @Builder 어노테이션  (0) 2023.04.15
트랜잭션과 @Transactional  (2) 2023.03.15
API - 3 (PUT, DELETE)  (0) 2022.09.21
REST / REST API / RESTful 간단히 정리  (0) 2022.09.21
API - 2 (GET, POST)  (0) 2022.09.21