📙

[스프링 입문] 1. 프로젝트 환경 설정

작성일자
Sep 27, 2022
태그
SUB PAGE
프로젝트
스프링 입문
책 종류
본 게시글은 하단 강의를 듣고 학습한 내용을 제 생각으로 요약, 정리한 글입니다.
 

1. 프로젝트 생성

  1. Java 11 설치
      • 설치 위치: C:\Program Files\Java\jdk-11.0.16.1
        • notion image
        • 설치위치는 노트북(11.0.16.1), 데스크톱(11.0.16) 동일
  1. IDE: IntelliJ 설치
 
  1. 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io
    1. 세팅 방법
      • Maven/Gradle Project : 필요한 라이브러리 가져오고 빌드 관리하는 툴 → Gradle 선택
      • Language → Java 선택
      • Spring Boot → ex) 2.7.4선택(내 노트북 기준) → snapshot, m1 안붙은 최신 버전 선택
      • Dependencies: 스프링부트 기반으로 프로젝트 시작할 때 어떤 라이브러리 가져올 것인가. → Spring Web 검색하여 선택, Thymeleaf 검색하여 선택(html 만들어주는 템플릿 엔진)
      • GENERATE 누르기 → 다운로드 됨. 원하는 폴더에 넣고 압축 풀기.
 
  1. intellij에서 open 눌러서 hello-spring(스프링 입문)의 build.gradle선택해서 open하기
 
  1. Open as Project 선택
 
프로젝트 구조
  • src/main/java/패키지, 소스파일
    • src/main/resources/java코드 파일 제외한 xml, 설정파일, html 등등
    • src/test/java/테스트코드
    • src/build.gradle → 버전 설정, 라이브러리 가져옴
      • src/.gitignore
      • 패키지 구조가 폴더 구조로 나옴. 설정 눌러서 Compact middle packages / Flatten packages로 선택 가능.
       
      1. src/main/java/hello/hellospring/HelloSpringApplication.java의 main method 실행하기(run)
        1. src/main/java/hello/hellospring/HelloSpringApplication.java
          notion image
          notion image
       
      1. localhost:8080 브라우저에서 들어가기. error 페이지 뜸 (성공임)
        1. notion image
       
      1. 왼쪽에 끄는 버튼(빨간 네모)으로 끄고 다시 들어가면 사이트에 연결할 수 없다고 뜸
       
      1. Settings(오른쪽 상단에 톱니바퀴 모양)(혹은 Preferences)에서 gradle 검색하면 build에 Gradle있음.
          • Build and run using이랑 Run tests using을 둘다 intelliJ로 바꿔주기! (gradle통해 run하면 느림)
          notion image
           
      1. intellij 깃허브 연동
        1. 참고 아티클 + 에러 해결

          → Git 실행 설정, GitHub 계정 연동 까지만 참고함

          → 터미널 Git Bash로 변경하는 데에 참고함

          → git 브랜치 체크아웃 시 발생한 에러 해결하는 데에 참고함

          → git add . 할 때 발생한 경고 해결하는 데에 참고함
          git config --global core.autocrlf true

          → 실수 방지
          git add .
          // commit을 진행하기 전의 임시 저장된 상태로 변경사항들 올리기
          git commit -m ‘커밋메시지’
          git status
          git push origin ChooSeoyeon
          git pull origin master

          → 콘솔 한글 깨짐 해결

          → 실수로 루트 두 개 등록해서 발생한 에러 해결

           
           
          급한 사람은 3부터 따라하기
        2. intellij git 실행 설정 (상단 아티클 참고)
        3. intellij github 계정 연동 (상단 아티클 참고)
        4. 원하는 위치에 GDSC-1st-Backend-Study/ChooSeoyeon 폴더 만들기
        5. 만들어둔 프로젝트를 ChooSeoyeon 폴더 내부로 옮기기
        6. 터미널(gitbash)(gitbash를 intellij에서 여는 것도 가능. 본인 편한 대로)에서 GDSC-1st-Backend-Study 폴더 들어가서 아래 코드 입력
          1. 원격 저장소 init
            1. → git init
          2. 원격 저장소 연결
            1. → git remote add
          3. pull 받기
            1. → git pull origin master
          4. 브랜치 변경 (브랜치명과 폴더명이 중복되어 checkout으론 에러 났음. 따라서 switch 사용함 - 맞는 방법인진 확실x..)
            1. → git switch origin ChooSeoyeon
          5. commit하고 push하기
            1. → git add .
              → git commit -m ‘커밋메시지’
              → git push origin ChooSeoyeon

      2. 라이브러리

      • Gradle은 의존관계가 있는 라이브러리를 다 함께 다운로드함
        • → spring관련 라이브러리 쓰면 알아서 core까지 다 가져와 줌.(편리)
           

      3. View 환경설정

      1) index.html → 정적 컨텐츠 방식

      • Welcome Page 만들기
      1. html 파일 만들기
        1. src/main/resources/static/index.html
           
      1. 서버 껐다 키기(좌측 하단에 빨간네모→초록세모 차례로 클릭)
      1. localhost:8080 들어가서 확인(정적페이지)

      2) 템플릿 엔진 쓰면 동적페이지 사용 가능 → thymeleaf 템플릿엔진

      참고 사이트

      3) /hello & hello.html → 동적 컨텐츠 방식 (MVC, 템플릿 방식)

      • Controller(웹어플리케이션의 첫번째 진입점) 사용해서 Page 만들기
      1. src/main/java에서 package 만들기 → hello.hellospring.controller
      1. 만든 package에서 Java Class 만들기 → HelloController
      1. Controller 코드 입력
        1. src/main/java/hello/hellospring/controller/HelloController.java
      1. html 파일 만들기
        1. src/main/resources/templates/hello.html
          타임리프 쓸 때 값이 안들어온다면?
          예를 들어 Controller에서 data 값을 안주면 null로 화면에 뜸. 에러는 안남.
      1. 서버 껐다 키기
        1. 에러
          해결
          → 아래 코드 추가하기
          import org.springframework.ui.Model;
          import org.springframework.web.bind.annotation.GetMapping;
          → GetMapping이랑 Model에 대해 import를 안해서 발생한 에러였음
      1. localhost:8080/hello 들어가서 확인
        1. 페이지 소스
          notion image

      4) 동작 원리

      notion image
      1. 웹 브라우저에서 /hello 던지면, 스프링부트가 내장한 톰캣이란 웹서버가 이를 받아서 스프링한테 이에 대해 물어봄.
      1. 스프링이 helloController에 보면 GetMapping(”hello”)가 있는데, 여기서 Get은 Get, Post… method 할 때 Get임. Get 방식이기에 컨트롤러의 hello url에 매칭이 됨.
      1. 컨트롤러에 있는 아래 method가 실행됨.
        1. model은 스프링이 만들어서 넘겨준거임. model에다가 addAttribute해서 key는 data고 값은 hello!!라고 씀으로써 model에 data는 hello!!라고 넣어놈.
        1. “hello”를 return 함. 이때 hello는 src/main/resources/template에 있는 html 파일 이름과 같은 거임. 즉, hello.html에 렌더링시키라는 뜻임. 모델이란걸 화면에 넘기면서 hello.html의 화면을 실행시키라는 거임.
            • return 값 == html 파일명
              • 에러
                해결
                return값은 "hoho"인데 templates의 html파일 이름은 hi.html이라 둘이 달라 발생한 에러. 두 개를 같게 만들어주면 됨
                notion image
            정리
            • 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다.
              • 스프링 부트 템플릿엔진 기본 viewName 매핑
              • resources:templates/ +{ViewName}+ .html
            참고
            • spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.
            • 인텔리J 컴파일 방법: 메뉴 build Recompile

        4. 빌드하고 실행하기

        1. intellij에서 구동 중인 서버 끄기
          1. notion image
        1. 터미널(git bash)에서 hello-spring(스프링 입문) 폴더 들어가기
          1. cd c/리포지토리/GDSC-1st-Backend-Study/ChooSeoyeon/스프링 입문
            notion image
        1. ./gradlew build
          1. notion image
        1. cd build/libs
        1. ls -arlth → 18메가 짜리 jar 파일 있는 거 확인 가능
          1. notion image
        1. java -jar hello-spring-0.0.1-SNAPSHOT.jar
          1. notion image
         
        • 배포 시, hello-spring-0.0.1-SNAPSHOT.jar 파일만 복사해서 서버에 넣고서
        java -jar로 복사한 파일을 실행하면 됨. 그러면 서버에서 스프링이 동작하게 됨.
         
        • 잘 안되면 ./gradlew clean build 하면 됨. 그러면 완전히 지우고 다시 build함.