저고데

[Spring Boot]1. 스프링 부트의 핵심 기능 본문

Spring Boot

[Spring Boot]1. 스프링 부트의 핵심 기능

진철 2023. 12. 23. 01:43
728x90
반응형

스프링 부트의 핵심 기능은 '의존성 관리 간소화', '배포 간소화', '자동 설정'으로 크게 세 가지가 있다.

우선 의존성 관리 간소화부터 살펴보자.

 

1. 의존성 관리 간소화

개발을 하는 데 있어서 처음부터 끝까지 내가 코드를 작성할 수는 없을 것이다.

이게 무슨 말이냐면, 다른 누군가가 만들어놓은 라이브러리 등을 사용해야 하는데, 개발 환경 버전마다 호환 여부가 다르기 때문에 충돌이 발생한다.

이를 의존성 충돌이라고 하는데 스프링 부트는 이를 간소화해준다.

매번 동일한 방식으로 특정 기능을 제공한다는 입증된 전제를 바탕으로 제작되었기 때문에 가능하다.

또한 단일 어플리케이션에 필요한 기능을 모두 제공하기 때문에 여러 라이브러리 버전이 모든 의존성에 맞게 동기화된다는 특징이 있다.

즉, "모든 의존성 간의 관계가 완벽하게 테스트됐다는 것" (!!)

그렇다면 의존성에 포함된 라이브러리가 다른 버전 라이브러리에 있는 기능을 포함해야하는 예외적인 경우는 어떨까?

테스트된 라이브러리 버전을 간단히 오버라이딩하는 방법으로 해결할 수 있다.(하지만 이는 매우 드문 경우이다.)

 

2. 배포 간소화

자바 어플리케이션을 배포하는 과정은 매우 복잡하다고 한다. (아직 자바를 배포해본 적은 없으나 파이썬이나 자바 스크립트는 배포 과정에서 딱히 어렵거나 불편한 점이 없었다.)

기존에는 자바를 배포하기 위해 만든 JAR 파일을 실행할 수가 없었다.

하지만 스프링 부트에서는 실행하는 JAR의 내용도 추출할 수 있다.

따라서 실행 가능한 JAR 파일이 원하는 기능을 실행해준다는 특징이자 장점이 있다.

빌드 과정에서 단일 속성을 설정하면, 스프링 부트 빌드 플러그인이 단일 JAR 파일을 자체적으로 실행 가능한 파일로 만들기에 간단한 명령어로 작동시킬 수 있는 최강의 장점이 있다.

 

3. 자동 설정

해당 부분이 아마 가장 매력적인 특징이 아닐까 싶다.

우선 자동 설정 개념에 앞서서 '의견'이라는 개념을 알아보자.

우리가 프론트엔드에서 로컬 환경으로 실행했다고 가정하자.

localhost라는 창이 뜨면서 UI가 보일 것이다.

혹시 왜 localhost라고 이름이 고정되었는지 의문을 가진 적이 있는가?(일단 나는 없다.)

개발 과정에서 특정 패턴이 자주 반복되는 것이 있는데, 보통 80~90%의 비율이 반복되는 코드일 것이다.

대부분을 차지하는 반복 행동을 자동으로 설정하면 효율이 엄청 오를 것이다.

따라서 일관성이 있는 부분을 일종의 default으로 설정해서 반복적으로 사용하게 하는 것을 '의견'이라고 한다.(제가 해석한 것이라서 틀렸을 수도 있습니다.)

localhost 뿐만 아니라 DB 연결 및 종료 등 반복되는 행동들을 자동으로 설정하여 작업을 간소화해주는 특징이 있다.

 

728x90
반응형