6개월 간의 국비학원 과정을 수료하고...
학원에서 스프링에 대해 배웠고, 프로젝트 진행도 해보았습니다.
하지만 누군가 제게 "스프링이 뭐야?" 라고 묻는다면 말문이 막히더군요.
제대로 알고 사용한 게 아니었단 거죠..
대체 스프링이란 놈이 뭐냐? 왜 써? 스프링부트란건 또 뭐지?
요즘엔 그런 의문에 대한 답을 찾기 위한 공부를 하고 있습니다.
이번 시간에는 Spring과 SpringBoot의 차이점에 대해 알아보겠습니다.
바쁜 분들을 위한 간단 총정리는 맨 아래에 있습니다.
유튜브 '우아한 Tech' 채널에 좋은 영상이 있길래 보고 정리를 해보았습니다.
중간중간에 용어에 대한 설명도 곁들여봤습니다.
재밌고 알기 쉽게 설명을 잘 해주셔서 영상도 첨부합니다.
Spring과 SpringBoot의 차이가 뭐야?
1. dependency 에서 차이가 있다.
스프링에 비해 스프링부트가 훨씬 짧아짐.
버전관리도 권장버전으로 자동 설정 된다.
*dependency?
A라는 클래스에서 B라는 객체의 메소드를 사용해야 한다고 가정해 봅시다.
(이런 관계를 A는 B에 의존적이다 라고 합니다.)
우리가 알고 있는 방식으로는 new 연산자를 사용해 객체를 생성하고 메소드를 호출하겠죠.
그런데 나중에 그 B객체의 클래스명이 바뀌어 버린다면?
B객체가 사용 된 코드를 찾아가서 일일히 바꿔줘야 할 겁니다.
시간도 많이 들 뿐더러 혹여나 실수로 빼먹는다면 문제가 발생하겠죠.
즉, '코드의 결합도(Coupling)'가 높아지게 됩니다.
그런 객체 생성이나 생명주기에 대한 관리를 개발자가 직접하는게 아닌,
외부의 설정파일 등을 통해 정의하게 한 디자인 패턴을 말합니다.
public void updateUser(User user){
int result = new B.updateUser(user);
}
2. configuration, 설정에 관련된 코드량이 줄었다.
application.properties => application.yml 로 넘어오면서
내용 파악도 쉬워지고 가독성이 좋아졌다.
*yml, YAML 이란?
기존 xml이나 태그 기반이 아닌, 친화적인 언어로 바꾸었다.
3. 내장서버가 있다.
서버 구동시간이 절반 가까이 단축되었다.
내장 서블릿 컨테이너 덕분에 jar 파일로 간단하게 배포가 가능하다.
바쁜 분들을 위한 총 정리
-간편한 설정
-편리한 의존성 관리&자동 권장 버전 관리
-내장 서버로 인한 간단한 배포 서버 구축
-Spring Security, Data JPA 등의
다른 스프링 프레임워크 요소를 쉽게 사용
=> 개발자들이 개발에만 더욱 집중할 수 있게 된다!
'BackEnd' 카테고리의 다른 글
Nest-cli로 프로젝트 생성 시 git 추적 안되는 문제 (0) | 2024.08.21 |
---|---|
Node.js 의 이벤트 루프 (1) | 2024.03.05 |
JPA - 영속성 컨텍스트 (1) | 2024.01.15 |
DDD - 엔티티와 밸류 (0) | 2024.01.12 |
JPA 빠르게 훑어보기 (0) | 2023.08.20 |