Spring 기초

줌인·2024년 8월 19일

백엔드

목록 보기
8/12

📍 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을 빌드

  1. 코드가 있는 디렉토리로 이동
  2. ./gradlew build 커멘드로 빌드
  3. cd build/libs 빌드 디렉토리로 이동
  4. java -jar {jar파일 이름.jar} 파일 실행

  5. 빌드 폴더를 없애고 싶으면 ./gradlew clean build로 클린

배포할 때는 jar파일을 복사해서 서버에 넣어주고 파일 실행

⭐️ 중요

개발 생태계가 으레 그렇듯, spring 생태계 또한 너무 거대해서 다 머리에 넣을 수가 없음.
필요한 걸 찾는 능력이 중요.
공식 문서를 들여다보는 습관 중요.
spring.io 페이지에서 공식문서 찾아서 검색 가능해야함.

profile
지극히 개인적인 복습 블로그

0개의 댓글