스프링 부트를 사용하는 이유는 다음과 같다
Fat Jar는 하나의 Jar 파일에 라이브러리의 클래스와 리소스를 모두 포함해였다. 그래서 실행에 필요한 모든 내용을 하나의 JAR로 만들어서 배포하는 것이 가능하지만 다음과 같은 문제를 가지고 있다.
실행 가능 Jar
스프링 부트는 이런 문제를 해결하기 위해 jar 내부에 jar를 포함할 수 있는 특별한 구조의 jar를 만들고 동시에 만든 jar 내부 jar를 포함해서 실행할 수 있게 한다. 이것을 실행 가능 jar라고 한다.
이를 통해
Fat Jar의 문제를 해결하였다.
스프링 부트는 개발자 대신에 수많은 라이브러리의 버전을 직접 관리해준다. 개발자는 원하는 라이브러리만 고르고 라이브러리의 버전은 생략해도 된다. 그러면 스프링 부트가 버전에 맞춘 최적화된 라이브러리 버전을 선택해 준다.
웹프로젝트를 하나 실행하려면 생각보다 수많은 라이브러리가 필요하기에 개발자는 일반적으로 많이 사용하는 대중적인 라이브러리들을 포함해서 간단하게 시작하고 싶어한다.
스프링 부트는 이런 문제를 해결하기 위해 프로젝트를 시작하는데 필요한 관련 라이브러리를 모아둔 스프링 부트 스타터를 제공한다.
스프링 부트는 자동 구성(Auto Configuration)이라는 기능을 제공하는데, 일반적으로 자주 사용하는 수많은 빈들을 자동으로 등록해주는 기능이다. 이러한 자동 구성 덕분에 개발자는 반복적이고 복잡한 빈 등록과 설정을 최소화하고 애플리케이션 개발을 빠르게 시작할 수 있다.
자동 설정 vs 자동 구성
자동 설정 : Configuration이라는 단어가 컴퓨터 용어에서는 환결 설정, 설정이라는 뜻으로 자주 사용된다. Auto Configuration은 크게 보면 빈들을 자동으로 등록해서 스프링이 동자갛는 환경을 자동으로 설정해주기 때문에 자동 설정이라는 용어도 맞다.
자동 구성 : Configuration이라는 단어는 구성, 배치라는 뜻도 있다. 스프링도 스프링 실행에 필요한 빈들을 적절하게 배치해야 한다. 자동 구성은 스프링 실행에 필요한 빈들을 자동으로 배치해주는 것이다.
자동 설정, 자동 구성 모두 맞는 말이다. 자동 설정은 넓게 사용되는 의미이고, 자동 구성은 실행에 필요한 컴포넌트 조각을 자동으로 배치한다는 더 좁은 의미에 가깝다.
하나의 애플리케이션을 여러 다른 환경에서 사용해야할 때가 있다. 대표적으로 개발이 잘 진행되고 있는지 내부에서 확인하는 용도의 개발 환경, 그리고 실제 고객에게 서비스하는 운영 환경이 있다.
문제는 각각의 환경에 따라서 서로 다른 설정값이 존재한다는 점이다.
이 문제를 해결하는 가장 단순한 방법은 각각의 환경에 맞게 애플리케이케이션을 빌드하는 것이다. 하지만 이는 환경에 따라서 빌드를 여러버 해야 하고 개발 버전과 운영버전의 빌드 결과물이 다르고 유연성이 떨어지기에 빌드는 한 번만 하고 각 환경에 맞추어 실행 시점에 외부 설정값을 주입해야 한다.
스프링은 이 문제를 Environment와 PropertySource라는 추상화를 통해서 해결한다.
좋은 정보 얻어갑니다, 감사합니다.