2022-04-04 TIL

프로그래머스 백엔드 데브코스 15일차

새로운팀

  • 👍

SpringBoot Part 1

Build

  • 필요한 라이브러리를 classpath에 받는다.
  • 소스 코드를 컴파일하고 테스트를 실행 그리고 packing한다.
  • packing(jar/war/zip etc)된 파일을 주로 artifacts라 부르고 서버나 레파지토리에 배포한다.

Maven

  • 프로젝트 빌드 도구 중 하나로 XML을 사용한다.
  • archetypes라는 프로젝트 템플릿 도구를 사용하여 설정을 불러올 수 있다.
  • dependency로 외부라이브러리를 관리할 수 있다.
  • xml로 프로젝트에 대한 decription을 한다.

Maven Coordinates

  • 아래 3가지로 프로젝트를 식별한다.
  • groupId(ex. org.prgms)
  • artifactId(ex. dev-kdt-maven)
  • version(ex. 0.0.1-SNAPSHOT)

Maven Multi Module

	<modules>
    	<module>test-a</modlue>
        <module>test-b</modlue>
    <modeuls>
  • 위 명령어를 통해 프로젝트 내부에 개별 모듈을 만들 수 있다.
  • 각 모듈은 pom.xml을 가지고 있고 <parent>를 사용하여 부모 프로젝트를 추가할 수 있다.

Maven Dependency Scope

  • dependency 별 영역을 지정할 수 있다.
  • compile -> 기본영역
  • provided -> compile, test에는 저장되지만 runtime에는 제외된다.
  • runtime -> runtime에만 포함된다.
  • system -> 특정 jar를 사용할 수 있게 지정할 수 있다.
  • test -> test에만 포함된다.

Maven 꿀팁

  • mvn dependency:tree -> maven dependency를 트리구조로 보여준다.
  • dependency에 <scope>을 추가하면 특정 라이프 사이클에만 사용 할 수 있게 해준다.

Gradle

  • Groovy를 이용한 빌드 도구 중 하나다.

Gradle Setting

  • setting.gradle 파일을 통해 멀티 프로젝트를 설정 할 수 있다.

SpringBoot CLI

  • 커맨드 라인 입력만으로도 스프링부트 프로젝트를 설치 할 수 있게 한다.
	// 윈도우 powershell에서 springboot cli 설치하기
    Set-ExecutionPolicy RemoteSigned -scope CurrentUser
    iwr -useb get.scoop.sh | iex
    scoop install curl
    scoop bucket add extras
    scoop install springboot
	// spring shell 써보기
    spring shell
    // 버전 출력
    version
    // demo 프로젝트 만들기
    init
    // 종료
    exit
	// 각종 명령어
    // 데모 프로젝트 만들기
    spring init
    // 버전확인
    spring version
  • 빌드툴(--build), 자바버전(j), 그룹아이디(g), artifactId(a), 프로젝트이름(n), 압축을 풀어서 저장할 폴더명(x)을 지정하여 프로젝트를 만들 수 있다.
spring init --build maven -j 16 -g org.prgms -a kdt-spring-demo -n kdt-spring-demo -x kddt-spring-demo

SpringBoot - 용어정리

  • Entitiy -> 다른 Entitiy와 구분 할 수 있는 식별자(ID)를 가지고 있고 시간의 흐름에 따라 지속적으로 변경되는 객체
  • Value Object(VO) -> VO 객체는 각 속성(필드)이 개별적으로 변하지 않는 불변 객체
  • 의존성 -> 코드 작성하는 시점에서 발생하는 컴파일타임 의존성, App이 실행되는 시점의 런타임 의존성이 있다.

궁금증

  • 왜 식별자의 데이터타입은 UUID일까
  • method 내부의 var 변수는 뭘까
  • java14부터 추가된 record는 뭘까
  • Assert와 MessageFormat의 사용처

좋은 웹페이지 즐겨찾기