“자바로 서버 만들 때는 스프링이 갑(甲)!” 이라는 말, 들어본 적 있으신가요?
여기서는 그 말의 주인공, Spring의 특징과 장단점, 그리고 Spring Boot와는 어떻게 다른지에 대해 알아보려고 해요.
Spring = “IoC(제어의 역전) + DI(의존성 주입) + AOP(관점 지향 프로그래밍)”가 핵심!
IoC(제어의 역전)
DI(의존성 주입)
OrderService
가 PaymentService
를 필요로 할 때, 직접 new
로 만드는 대신 스프링이 알아서 주입해줘요.AOP(관점 지향 프로그래밍)
유연성과 확장성
강력한 의존성 관리
다양한 서브 프로젝트
방대한 커뮤니티 & 레퍼런스
테스트 편의성
학습 곡선
설정의 복잡성
오버스펙 가능성
구분 | Spring Framework | Spring Boot |
---|---|---|
설정 방식 | XML, Java Config 설정을 직접 해줘야 함 | 스타터(Starter), 자동 설정(Auto Configuration)으로 미리 설정됨 |
서버 | Tomcat 등의 외부 서버를 따로 설정 | 임베디드(Embedded) 서버를 기본 포함 |
시작 문서 | 구조와 설정 파일 작성에 대한 러닝 커브가 비교적 높음 | Spring Initializr 등으로 빠르게 프로젝트 시작 가능 |
배포 방법 | 보통 WAR 파일을 만들어 별도 서버에 올림 | 별도 설정 없이 jar로 실행 가능 |
장점 | 세밀한 설정 가능, 다양한 모듈 지원 | 빠른 개발 셋업, 간편한 실행과 배포, 설정 용이 |
단점 | 설정이 복잡하고, 빠른 시작이 어려울 수 있음 | 자동 설정이 과도하면 원하는 대로 조정하기 힘들 수 있음, 오버라이드는 가능하나 귀찮을 수 있음 |
Spring은 자바 생태계에서 매우 중요한 위치를 차지하는 프레임워크에요.
하지만 “큰 힘에는 큰 책임이 따른다”처럼, 개념과 설정이 만만치 않을 수도 있어요. 그럴 땐 Spring Boot로 시작해서
자동 구성의 편리함을 느껴보시길 추천드립니다.
“스프링과 스프링 부트를 알면 자바 백엔드 개발의 8할은 섭렵!”
즐거운 스프링 개발 되세요!
((•‿•)ノ
)