Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Ruff! Ruff!

[Spring Boot] - 스프링부트 프로젝트 시작하기(Maven) 본문

Java/Spring Boot

[Spring Boot] - 스프링부트 프로젝트 시작하기(Maven)

maeng-kim 2024. 2. 28. 18:59

본 게시물은 유튜브 채널 '어라운드 허브 스튜디오'의 스프링 부트 강의를 들으며 작성한 게시물입니다.
https://youtube.com/@around.hub.studio?si=wB1YEVq-ulj1r4Ao

 

어라운드 허브 스튜디오 - Around Hub Studio

우리에게 필요한 정보를 담는 '어라운드 허브 스튜디오'입니다! 📌 영상은 매주 수요일 7시 업로드 중입니다. [ 정보 ] 알고 싶은 컨텐츠, 동영상 건의 👉 around.hub.official@gmail.com 도서 판매 👉 서

www.youtube.com

 


1강

  • 인텔리제이로 프로젝트 생성하고 ~ string 선택해서 프로젝트 만들기
  • Type
    • Maven: 조상격 빌드 툴 → 실무에선 메이븐이 많이 사용됨.
    • Gradle: 그루비문법을 가져와서 메이븐과 어느정도 통합시킴
  • 그룹: 도메인의 역할
  • 아티펙트: 플젝 이름 사용하는 경우가 많음. 소문자로 많이 사용
  • sdk: 1.8 선택
  • 패키징
    • jar: 자바아카이브 → 자바로만 이뤄진 압축판 파일 → 톰캣도 내장해서 실행할 수 있게 만들 것..
    • war: 웹 어플리케이션 아카이브 → 웹에 띄우는 압축 파일들/ 자바런타임 → 환경만 세팅 되어 있다면 어디서든 사용 가능 → 웹 관련된 내용. 더 전문화 → 톰캣 등등,, 웹 컨테이너 필요함
  • dependencies : 필요한 툴? 같은 거 추가해줌 (나중에 추가도 가능)
    • 시큐리티 → 로그인 할 때 뭐 인증같은 거 등등 추가 할 수 있음
    • lombok, spring configuration processor, spring web 추가
  • 프로젝트 구조
    • testproject(최상단)
      • src
        • main
          • java
            • 패키지 네임 (그룹과 아티펙트 기준) → com.example.testproject → 3개의 경로로 이뤄진 것 (com/ example/ testproject
          • resources
            • static
            • templates
            • application.properties → 프로젝트 하나가 하나의 어플리케이션 단위가 됨 → 그걸 가동하기 위해서 필요한 내용들 (데베 연결 등. → 데베 연결에 필요한 정보들)을 적음 (스프링부트에서 가장 중요한 내용)
        • test → 일반적으로 메인 패키지에 나오는 class에 맞게 일대일로 대응하게끔 test class도 만들어줘야함 → 위에 main을 test에서 테스트를 해보는 식 (실무에 적용 전에 테스트용 영역) → 패키지를 만들어서 프로그램을 실행하는데 test가 아니고 main에서 하면 기록에 다 남음. → 따라서 test에서 실행시키면 결과가 나오는 게 아니라 test 성공 이런 식으로 뜸. (진짜 test용. 파일에 있는 거 test하고 싶으면 test에서 실행. 단축키하면 main에 있는 게 test에서도 생성이 됨.)
          • java
            • com.example.testproject
      • pom.xml → 메이븐을 사용할 때 사용되는 pom파일
      <태그>그룹아이디, 아티펙트 아이디description : 프로젝트에 대한 간단한 설명 같은 거build: 플러그인 내용
    • dependency: 현재 잡혀있는 dependency 보여줌
    • 버전: 1.0.0
    • parent : 폼 파일 상단에 다른 폼 파일 설정 잡아주는 거 → 의존성 확인

 


2강

<Maven vs Gradle>

  1. 빌드 관리 도구 (개발에서 중요함 !)
    -프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구
    -소스코드를 컴파일, 테스트, 정적분석 등을 하여 실행 가능한 앱으로 빌드해줌
    -외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트의 관리해줌
    -프로젝트 정보 관리, 테스트 빌드, 배포 등의 작업을 진행해줌 → 빌드 관리 도구를 사용하는 주된 목적
    → Maven, Gradle, Ant는 자바의 대표적인 빌드 도구
  2. Maven이란?
    • 자바의 대표적인 관리 도구였던 ant를 대체하기 위해 개발됨.
    • 프로젝트의 외부 라이브러리를 쉽게 참조할 수 있게 pom.xml파일로 명시하여 관리
    • 참조한 외부 라이브러리에 연관된 다른 라이브러리도 자동으로 관리됨 → 세세한 것까지 신경 쓸 필요가 없음
    • 사용하는 이유
      • 기존의 ant는 빌드의 기능만 있음 그외는 다 수동 → 개발자가 다 관리해야댐 → 메이븐은 자동으로 관리해줌 → 편리 + 라이브러리에 변동사항 있으면 자동으로 업데이트 해줌
      • 단점: 대규모 형태면 xml형태로 다 관리해줘야해서 위상(단계)가 길어지고 많아지는 단점이 있음.
      • ant는 라이프 사이클이 없음. (라이프 사이클: 빌드를 하기 위해서 커멘드를 통해 메이븐의 라이프사이클 단계를 밟아나갈 수 있으나 ant는 개발자가 수동으로 빌드 순서 등을 관리 해줘야함)
    • 간단 사용법
      • pom.xml 파일을 활용해 빌드 및 관리
      • pom.xml의 역할
        • 프로젝트 정보 관리
        • 해당 플젝에서 사용하는 외부 라이브러리 관리
        • 해당 플젝의 빌드 관련 설정
      • 메이븐 대표 태그 설명


→ 그룹 아이디+아티펙트 아이디 = 도메인의 역할 (도메인 주소)

→ 아티펙트 아이디 : 프로그램의 정체성을 나타내는 키워드 등을 넣어주는 게 일반적. → 솔루션마다의 개념들이 각각 들어감 (겹치지 않게끔) → 약간 장고에서의 app의 개념인ㄱ ㅏ..?

→ 버전: 플젝의 버전 → 버저닝하는 방법(약속된 방법)이 따로 있음

→ depeendendies: 가장 중요. 의존성

→ build: 배포 때 사용되는 .. 그런 빌드에 필요한 정보들

3. Gradle이란?

  • Groovy 스크립트를 활용한 빌드 관리 도구
  • 안드로이드 플젝의 표준 빌드 시스템으로 채택
  • 멀티 프로젝트의 빌드에 최적화 하여 설계됨
  • Maven에 비해 더 빠른 처리 속도 → 최대 100배정도……..
  • Maven에 비해 더 간결한 구성 가능 → xml형태면 태그니까 메이븐에 비해서 더 간결한 구성 가능
  • 그래들과 메이븐 비교
    • 그래들에 비해 메이븐 점유율이 아직은 더 높음 (그래들 점유율 오르는 중이긴 함) → 아직까진 실무에선 메이븐
    • 그래들에 비해 메이븐의 성능이 떨어짐
    • 메이븐에 비해 그래들이 대규모 플젝에서 성능이 좋음
    • Maven: pom.xml | Gradle: build.gradle
    • 그래들은 설치 없이 사용 가능
  • 그래들 대표용어 설명
    • repositories : 라이브러리가 저장된 위치 등 설정
    • mavenCentral : 기본 메이븐 레포지토리
    • dependencies : 라이브러리 사용을 위한 의존성 설정
  • 대표적인 레포지토리 사이트
    Maven Repository : https://mvnrepository.com/
    • 원하는 라이브러리 검색해서 라이브러리 추가하는 방법대로 추가하면 됨.

 

그래들을 배우는 게 더 간편하고 하니깐 그래들 추천함.. 그러나 본 영상에선 메이븐으로