📍 Spring이란?
스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로 쓰이고 있다.
- 위키백과 -
📍 Spring 기초 개념
프로젝트 시작
- 옛날에는 밑바닥부터 스프링 프로젝트를 만들었는데 요즘엔 다 스프링 부트라는 틀을 사용함. 라이브러리들 의존 관계까지 다 설정되어있음. 그래서 나도 그냥 그거 쓰면 됨.
https://start.spring.io/
- 옛날에는 별도의 서버에 톰캣같은 웹서버를 직접 설치해놓고 거기에 자바 코드를 밀어넣는 식으로 웹서버와 개발 라이브러리가 분리되어 있었고, 힘든 작업이었다고 함. 근데 요즘은 소스 라이브러리에서 웹 서버를 그냥 들고 있음(임베디드 되어있음). 이를 통해 자바 메인 메서드만 실행하는 데도 웹서버가 돌아감.
- maven project vs gradle project
- 얘네는 필요한 라이브러리를 땡겨오는 것부터 빌드까지 전반적인 라이프사이클을 관리해주는 빌드 툴
- 요즘엔 대부분 gradle을 사용한다
- 얽힌 의존관계들을 다 다운받아줌. 예를 들어 spring web만 내가 dependencies 설정 해놓으면 spring web에 필요한 이어지고 이어지는 모든 dependencies 다 받아줌
- dependencies
프로젝트에서 땡겨 쓸 라이브러리
e.g. spring web, Thymleaf(템플릿 엔진)
- 템플릿 엔진 : 지정된 템플릿 양식과 데이터를 합쳐 결과 문서(html)를 출력하는 소프트웨어
-
프로젝트 구성은 src폴더 안에 main과 test로 나누는 게 거의 표준
-
main은 java와 resources로 나뉨
-
java 안에 실제 소스코드들과 패키지 있음
-
resources는 실제 코드를 제외한 xml, 설정파일 등이 들어있음(자바파일을 제외한 나머지)
-
test는 testcode들과 관련된 코드들. junit 라이브러리를 사용함
- 요즘 개발 트렌드에서는 test code가 정말 중요하다는 뜻
- build.gradle
- gradle이 버전 설정 및 라이브러리 받은 거를 표시하는 파일
- package.json 같은 건데 스프링부트에서 알아서 만들어줌
Spring에서 사용되는 라이브러리들
스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot spring-core
- spring-boot-starter-logging logback, slf4j
테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
Spring을 빌드
- 코드가 있는 디렉토리로 이동
./gradlew build 커멘드로 빌드
cd build/libs 빌드 디렉토리로 이동
java -jar {jar파일 이름.jar} 파일 실행
- 빌드 폴더를 없애고 싶으면
./gradlew clean build로 클린
배포할 때는 jar파일을 복사해서 서버에 넣어주고 파일 실행
⭐️ 중요
개발 생태계가 으레 그렇듯, spring 생태계 또한 너무 거대해서 다 머리에 넣을 수가 없음.
필요한 걸 찾는 능력이 중요.
공식 문서를 들여다보는 습관 중요.
spring.io 페이지에서 공식문서 찾아서 검색 가능해야함.