Spring Boot
- 생산성 높은 코드란?
- Cost -> 비용을 줄여 줄 수 있음
- Time to Market (Perfection vs Done) ->덜 완전하더라도 적시에 출시하는게 중요하다
- Spring MVC -> Spring Boot
- 스프링을 사용하는 것 보단 좀 더 생산성을 높여 주기 위해
- 1) 수동적인 설정 부분들을 줄여줄 수 있다.
- 2) dependency 충돌 해결을 도와줄 수 있다.
- 3) 내장 서버를 포함하고 있다.
- 4) Spring Boot는 Spring Framework의 technology들을 그대로 활용한다.
Spring Boot의 특징
1) Auto Configuration
기존의 스프링 프레임워크는 아래와 같은 복잡한 설정들을 매번 해줘야한다
- 매번 프로젝트를 시작 할 때마다 이런 설정들을 복붙해야하는데 이는 좋지 않다.
- 그래서 Spring이 이런한 bean설정들을 자동으로 설정해주고 그 다음 우리가 필요하면 추가해주는 방식으로 이뤄진다.
- CLASSPATH에 어떠한 라이브러리들이 있는 쭉 살펴서 필요한 bean들을 자동 설정해준다.
- 예시1) Spring MVC jar라이브러리가 classpath에 있다? -> Dispatcher Servlet을 자동 설정 해줌
- 예시2) Hibernate jar라이브러리가 classpath에 있따? -> DataSource에 대한 부분들을 자동 설정 해줌
- 예시1) Spring MVC jar라이브러리가 classpath에 있다? -> Dispatcher Servlet을 자동 설정 해줌
- 필요하다면 직접 설정을 해줄 수 도 있다.
- pom.xml에 라이브러리 의존성을 추가해주면 spring boot가 알아서 이와 관련된 bean들을 생성해주고 application.properties에 필요한 property만 세팅해주면 된다.
2) Easy dependency Management
기존에 spring mvc를 위해 아래와 같은 라이브러리들을 일일이 설정해줘야했다.
- 그렇지만 버전의 호환성까지 알아서 설정해주는게 번거로웠다.
- 이를 위해 spring-boot-starter-를 통해서 미리 설정된 대부분의 흔하게 사용되는 라이브러리 의존성들을 한 번에 해결 해줄 수 있다.
만약 web프로젝트를 진행한다? 아래와 같이 spring-boot-starter-web하나만 추가해주면 이안에 아래 6가지 라이브러리들의 버전까지 알아서 모두 포함된다.
30개이상의 spring boot starter들이 존재한다.
- pom.xml도 계층 구조로 이뤄져있다. 이로 인해 상속의 개념이 적용가능하다.
3) Embedded Servlet Container
- war가 아닌 jar로 패키징하게 되면 tomcat과 같은 서블릿 컨테이너가 내장 되어 있게됨
4) SpringBoot Actuator
- Rest 자체 API를 제공하기 때문에 application을 모니터링하고 tracing할수가 있다.
- /beans로 모든 bean들을 조회할 수 가 있다.
- /mappings로 URL을 볼 수 가있다.
- /health로 application의 상태를 볼 수 가 있다.
아래 라이브러리들을 pom.xml에 추가해줘야한다.
디폴트로 /health와 /info가 노출이 되고 prefix로는 /actuator가 있다.
아래와 같이 endpoint를 직접 설정해주면 됨
Request매핑 정보도 볼 수 있음
- bean들의 정보들을 전부 볼 수도 있음