| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- Java
- Sts
- #javaStudy
- 메가바이트스쿨
- GIT
- 게시판 만들기
- tomcat
- 클래스 상속
- 게시판 리뷰 만들기
- side project
- 국비지원교육
- AWS
- MVC 패턴
- Entity
- crud
- Algorism study
- array
- MegabyteSchool
- 패스트캠퍼스
- spring boot
- 개발자취업부트캠프
- group study
- Interface
- 내일배움카드
- View
- MVC
- #패스트캠퍼스 #국비지원교육 #메가바이트스쿨 #MegabyteSchool #개발자취업부트캠프 #내일배움카드
- github
- 클래스 class
- Spring
- Today
- Total
tuter77
Spring : Spring과 Spring boot 비교. 본문
java도 끝나기 전 조금 진도가 이르지만, 스터디그룹에서 사이드 프로젝트를 결정하기 위한 기본개념이 너무 부족해 팀원들과 각각 기본개념들을 공부해오기로했다.
총 3가지 주제가 있었는데, myBatis/JPA 개념, 차이, 장단점이 있었고, Spring/Spring Boot 개념, 차이, 장단점. CSR/SSR의 개념, 차이, 장단점이 있었다.
이 중 나는 여러 채용공고에서 spring framework 사용 개발경험이라는 항목을 굉장히 많이 봤는데, 도대체 스프링이 무엇인지 궁금해서 내가 맡게 되었다.
스프링에 대해 간략하게 소개된 글을 다양하게 검색해서 읽었는데 10개면 10개 모두 듣도보도 못한 개념들로 꽉차있어, 내용을 알아보기가 힘들었다.
애시당초 나는 라이브러리와 프레임 워크의 차이점에 대해서도 잘 알지 못하는 상황이라 팀장에게 급히 물어봐야만했다.
간단하게 요약하면 프레임 워크는 여러 필요한 라이브러리들이 포함되어있는 더 큰 템플릿(틀)이었다.
그렇다면 프레임워크는 큰 틀과 같다는 개념을 바탕에 깔고 글들을 다시 읽자 조금이나마, 눈에 들어오기 시작했다.
그러나 스프링이라는게 여러 기능을 가지 템플릿이라는건 알겠다만, 핵심 기능이라고 나온것들은 따로 찾아볼 수 밖에 없는 것들이었다. (특히 DI, IoC 와 같은 것들)
결국 그냥 스프링 강의를 수강하기 시작했다.
●개념부터 정리하자면 스프링, 스프링 부트는 모두 객체지향적 프로그래밍 언어인 자바로 만들어진 프레임 워크이며, 자바가 웹서버에서 구동하기가 워낙 사용하기 불편했던 탓에 만들어진 것이라고 한다.(자바의 겨울이지나 봄이왔다고 해서 스프링이라고 지었다고 한다.)
스프링은 자바를 이용해 어플리케이션을 만들려고 활용하는 여러 툴이 활용된 프레임워크, 스프링 부트는 스프링을 모두 비슷하게 활용하자 더 편리하게 사용하려고 만든 상위 프레임 워크다.(사용자에게 가까운)
비유하자면 스프링은 스틱기어고, 스프링부트는 오토기어쯤 된다고 한다.
스프링에서 웹 서버와 소통하기 위해선 아파치 서버, 톰캣등의 웹 어플리케이션이 필요했는데 이 톰캣 세팅이 워낙 어렵다보니 스프링 부트에서는 톰캣을 자동으로 설정해주게끔 서버에 내장을 해버렸다.
때문에 컴퓨터 부팅하는 것과 같다고 해서 스프링 부트로 이름을 지었다고 한다.
●스프링의 장점은 다양하게 있다.
먼저 모든 기능에서 다양한 모듈을 사용가능한 자유도를 자랑한다.(심지어 외부 모듈까지 가능하다고 한다.)
계속해서 개발중이며, 이전 버전들과 높은 호환성을 가졌다.
또한 API디자인을 섬세하게 하려고 노력해, 스프링 오픈소스 자체가 좋은 참고가 된다.
앞서 말한것의 파생으로 높은 코드 품질을 유지하려한다.
반면, 단점은 장점들에서 찾을 수 있다.
높은 자유도 때문에 좋은 툴을 선택하기 힘든 상황이 발생한다.
이전 버전과의 높은 호환성은 레거시(낡은 기술)가 많이 남아있다는 말과 같은데, 이는 코드의 복잡성이 높아지기도 한다.
스프링 부트는 스프링의 장점을 다 가지면서 단점을 최소화 하기 위해 내놓은 서브 프로젝트라고 한다.
때문에 스프링 부트의 장점은 스프링과의 차이점이기도 하다.
첫번째로 dependency(의존성: 개념을 완전히 이해하진 못함..) 설정과 버전관리가 수월해졌다고 한다.
스프링 부트에서는 버전관리를 자동으로 해준다. 라이브러리 추가 등을 한번에 한다던지 하는 예시가 있다.
두번째로 스프링의 어려운 모든 어노테이션(주석) 및 빈 등록 등의 설정을 다 해야한다는 단점을 개선해 자동configuration이 있다. @SpringBootApplication 이라는 어노테이션 덕에 많은 외부 라이브러리, 내장 톰캣 서버등이 실행될 수 있다고 한다. 이 어노테이션은 @ComponentScan을 통해 어노테이션에 붙은 객체들을 스캔해 자동으로 Bean에 등록해준다.
(Bean은 자료를 저장하는 객체로서, 스프링 Bean은 자바 Bean과 다르게 New Object로 생성하는게 아닌 Class를 생성하면 SpringApplicationContext에 의해 등록되는 형태다. 이 과정에서 스프링 설정값이 씌워진다고 함.)
세번째로 배포가 편리하다. 스프링으로 개발한 애플리케이션은 war파일을 WAS(Wep Application Server)에 담아 배포했는데, 스프링 부트에선 내장된 WAS가 있기때문에 jar파일로 따로 설정을 하지않고도 간편히 배포할 수 있다고 한다.
이렇게 스프링과 스프링부트의 개념, 장단점, 차이점을 알아봤는데 이해가 안되는 개념들이 여전히 많다.
의존성은 라이브러리에 의존같은 개념으로 이해하면 될것 같기도하지만, 아직 핵심기능이 AOP, Validation, Data Binding, SqEL등 많이 남았기 때문에 공부를 깊게 해보아야 할것같다.
끝으로 왜 이렇게 이해부터 복잡한 스프링이 한국에서 그렇게 애용되는지가 궁금해 검색해 보았는데, 자바때문이었다.
한국에서 정부가 자바과정을 강력하게 추진했었고 그에대한 여파로 기업들은 자바를 애용하고 있었다. 거기다 정부인증시스템이 전부 자바로 제작되어 자바는 국내에서 필수적인 언어가 되었고, 그 여파로 프레임 워크는 스프링이 주류를 이루고 있다는 글을 읽었다.
(그러나 글 저자도 신입개발자가 굳이 스프링을 꼭 배워야하는지에는 의문을 가졌다.)
내 입장에선 채용공고에 거의 매번 보이는 스프링을 이번기회에 꼭 독파해야겠다는 자극이 되어 좋다.
위 내용은 2022.12.16에 공부한 내용입니다.
'SpringStudy' 카테고리의 다른 글
| Spring : 요일을 출력하는 프로그램 만들기. (0) | 2023.01.29 |
|---|---|
| Spring : STS를 활용하여 간단한 프로그램 만들기. (0) | 2023.01.29 |
| Spring : 기초 설정 (0) | 2023.01.29 |
| Spring: spring, spring boot 비교(2) (0) | 2023.01.29 |
| 2022.12.20 spring 강의 시작 (0) | 2022.12.20 |