스프링은 자바 엔터프라이즈 애플리케이션을 쉽게 만들도록 도와준다.
애플리케이션 성격에 따라 다양한 아키텍처가 필요할 수 있는데 이런것도 유연하게 대응할 수 있도록 도와준다.
오픈소스고 많은 사람들이 피드백 주고있어서 성공적으로 진화하고 있다.
스프링이 뭐냐
- 스프링 프레임워크
- 스프링 부트
- 스프링 관련 프로젝트 전부 (시큐리티, 배치 등등)
→ 이번 문서에서는 스프링 프레임워크 그 자체를 살펴볼 것이다.
스프링 역사
- 관심없어서 pass
- boot, batch, security, data, cloud 등 다양한 것들도 같이 진화하고 있는데 각각 다른 소스 코드이고, 배포주기도 다르고, 관리도 따로 한다는 점이 좀 신기하긴했음 → 어떻게 딱딱 조립하면 뚝딱 기능이 돌아가도록 만들었을까 고수다
디자인 철학
- 설정만 슥 바꾸면 코드를 바꾸지 않고도 infra, 써드파티 API 등을 뚝딱 바꿀 수 있게 함 → 이런것들에 대한 선택은 비교적 덜 중요하니 의사결정을 미룰 수 있도록 편리하게 만들어두는 듯
- not opinionated 하다. 너네의 다양한 선택을 존중한다~ → spring boot는 opinionated 하다고 써있음
- 하위호환을 신경 많이 쓴다. 스프링 버전 올려도 최대한 적게 깨지게 노력하고 있나봄 → 부트3 올릴 때 좀 잡음이 있던데 아닌감
- 문서나 코드 퀄리티 신경쓴다.