우당탕탕 개발일지

[스프링 입문 김영한 인프런] 섹션 1. 프로젝트 환경설정 본문

웹개발

[스프링 입문 김영한 인프런] 섹션 1. 프로젝트 환경설정

민아당긴아 2023. 10. 11. 20:57
섹션 1-1. 프로젝트 생성
  1. IDE: IntelliJ를 추천
  2. 스프링부트 기반으로 프로젝트를 만들어주는 사이트 이용(start.spring.io)
    • Project: Grandle-Groovy Project(라이브러리 및 라이프사이클 관리, 요즘 이거로 씀)
    • Language: Java
    • Spring Boot: 버전 선택, SNAPSHOT(아직 만들고있는 버전), M()(아직 release 안함)
    • Project Metadata: 보통 Group에 기업 도메인이름 넣음, Artifact: 빌드된 결과물(프로젝트명에 해당)
    • Dependencies: 어떤 라이브러리를 땡겨서 쓸 건지, Spring Web과 Thymeleaf(HTML을 만들어주는 템플릿 엔진)을 선택
    • Generate 버튼을 누르면 다운로드!
    • 압축 풀고 IntelliJ IDEA에서 Open or Import 클릭해서 해당파일 열기
    • build.gradle 파일 열기(Open as Project)

프로젝트 구조 파악

버전 설정하고, 라이브러리 땡겨오는 gradle

 

4. main 메서드 실행하면 HelloSpringApplication 클래스가 바로 실행된다

SpringBootApplication이 작동되면서 톰캣 내장서버도 같이 동작한다.

5. localhost:8080 들어가면 된다

섹션 1-2. 라이브러리 살펴보기

maven같은 빌드툴은 의존관계를 관리해줌

Gradle 눌러보면 Dependencies: 라이브러리 사이의 의존관계

[스프링 부트 라이브러리]

  1. spring-boot-starter-web
    1. spring-boot-starter-tomcat: 톰캣(웹서버)
    2. spring-webmvc: 스프링 웹 MVC
  2. spring-boot-starter-themeleaf: 타임리프 템플릿 엔진(View)
  3. spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
    1. spring-boot
      1. spring-core
    2. spring-boot-starter-logging
      1. logback, slf4j

[테스트 라이브러리]

  1. spring-boot-starter-test
    1. junit: 테스트 프레임워크
    2. mockito: 목 라이브러리
    3. assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    4. spring-test: 스프링 통합 테스트 지

섹션 1-3. View 환경설정

Welcome Page 만들기(도메인만 누르고 들어왔을 때의 페이지):
src/main/resources/static/index.html을 올려두면 Welcome page 기능을 한다

<a href="/hello">를 통해 경로 엔드포인트가 hello임을 알 수 있


**광범위한 스프링, 필요한 내용을 찾는 능력이 중요

srping.io>projects>spring boot>reference docs>spring boot features를 살펴보면서 필요한 내용 찾기!

3. Thymeleaf

return hello하면 viewResolver가 hello.html을 찾아서 실행
{data}는 모델에 들어있던 attributeName에 해당하고, attributeValue를 반환함
resources:templates/hello.html이 열리게 된다

섹션 1-4. 빌드업 설정하기

콘솔로 이동

  1. ./gradlew build
  2. cd build/libs
  3. java -jar hello-spring-0.0.1-SNAPSHOT.jar

느낀 점

아직 모르는 게 많다는 걸 느꼈다. 추가 활동을 꼭 해야겠다고 다짐!

추가 활동

  • 웹 MVC란?
    • 개발할 때 사용하는 디자인 패턴
    • 개발의 영역을 Model, View, Controller로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식
    • UI 영역과 도메인 영역이 구분되어 서로 영향을 주지 않고 개발 및 유지보수 가능
    • Model: Spring MVC 기반 웹 어플리케이션이 클라이언트로부터 요청을 받으면, 요청을 처리한 결과를 클라이언트에게 돌려주는데, 이 때 돌려주는 작업의 처리 결과 데이터
      • Service Layer: 클라이언트의 요청사항을 구체적으로 처리
      • Business Logic: 요청 사항 처리하기 위해 java 코드로 구현한 것
    • View: Model을 이용하여 화면에 보이는 리소스 제공(HTML 페이지 출력, pdf나 excel 등의 문서 형태로 출력, xml이나 json 등 특정 형식의 포맷으로 변환)
    • Controller: 클라이언트의 요청을 직접적으로 전달받는 endpoint, model과 view 사이에서 상호작용
      ![Spring MVC](<https://prod-files-secure.s3.us-west-2.amazonaws.com/cde84515-c58a-432e-96ba-fc090f132756/7ded13ae-1513-4663-b2ac-7d06b5401df6/Untitled.png>)
      
      Spring MVC
    
  • Thymeleaf 라이브러리
    • java 템플릿 엔진, html 생성 위해 사용
    • java 코드 삽입, 표현식을 통해 데이터를 동적으로 렌더링
  • IntelliJ
    • 젯브레인스(JetBrains) 사에서 제작한 Java 개발을 위한 툴
    • IntelliJ 혹은 IDEA 로도 불린다.
      • v1.3 - 2020-09-07
        • 윈도우 gradlew.bat -> gradlew로 변경
        v1.2 - 2020-08-28
        • 윈도우 사용자를 위한 IntelliJ 단축키 조회 방법 추가
        v1.1 - 2020-08-28
        • 윈도우 사용자를 위한 도움 추가
        윈도우에서 맥의 iTerm이 없는데 어떻게 하나요? 링크 추가
        • 도움 주신 분: 루시님
        v1.0 - 2020-07-20
        • 강의 오픈
      • 스프링 부트 최신 버전 선택 설명 추가
      • General error: "The write format 1 is smaller than the supported format 2 [2.0.206/5]" [50000-202] HY000/50000
      • 만약 이미 설치하고 실행까지 했다면 다시 설치한 이후에 ~/test.mv.db 파일을 꼭 삭제해주세요.
      • 최근에 나온 2.0.206 버전을 설치하면 일부 기능이 정상 동작하지 않습니다.
      • 버전 수정 이력

      섹션 1. 프로젝트 환결설정

      섹션 1-1. 프로젝트 생성
      1. IDE: IntelliJ를 추천
      2. 스프링부트 기반으로 프로젝트를 만들어주는 사이트 이용(start.spring.io)
        • Project: Grandle-Groovy Project(라이브러리 및 라이프사이클 관리, 요즘 이거로 씀)
        • Language: Java
        • Spring Boot: 버전 선택, SNAPSHOT(아직 만들고있는 버전), M()(아직 release 안함)
        • Project Metadata: 보통 Group에 기업 도메인이름 넣음, Artifact: 빌드된 결과물(프로젝트명에 해당)
        • Dependencies: 어떤 라이브러리를 땡겨서 쓸 건지, Spring Web과 Thymeleaf(HTML을 만들어주는 템플릿 엔진)을 선택
        • Generate 버튼을 누르면 다운로드!
        • 압축 풀고 IntelliJ IDEA에서 Open or Import 클릭해서 해당파일 열기
        • build.grandle 파일 열기(Open as Project)
      3. 프로젝트 구조 파악
      4. 설정에서 compact middle package 선호
      maven같은 빌드툴은 의존관계를 관리해줌[스프링 부트 라이브러리]
      1. spring-boot-starter-web
        1. spring-boot-starter-tomcat: 톰캣(웹서버)
        2. spring-webmvc: 스프링 웹 MVC
      2. spring-boot-starter-themeleaf: 타임리프 템플릿 엔진(View)
      3. spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
        1. spring-boot
          1. spring-core
        2. spring-boot-starter-logging
          1. logback, slf4j
      [테스트 라이브러리]
      1. spring-boot-starter-test
        1. junit: 테스트 프레임워크
        2. mockito: 목 라이브러리
        3. assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
        4. spring-test: 스프링 통합 테스트 지
      섹션 1-3. View 환경설정
      1. Welcome Page 만들기: src/main/resources/static/index.html을 올려두면 Welcome page 기능을 한다
      2. 광범위한 스프링, 필요한 내용을 찾는 능력이 중요
        1. srping.io>projects>spring boot>spring boot features
      3. Thymeleafreturn hello하면 viewResolver가 hello.html을 찾아서 실행
      4. {data}는 모델에 들어있던 attributeName에 해당하고, attributeValue를 반환함
      5. resources:templates/hello.html이 열리게 된다
      섹션 1-4. 빌드업 설정하기
      1. ./gradlew build
      2. cd build/libs
      3. java -jar hello-spring-0.0.1-SNAPSHOT.jar

      추가 활동
      • 웹 MVC란?
        • 개발할 때 사용하는 디자인 패턴
        • 개발의 영역을 Model, View, Controller로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식
        • UI 영역과 도메인 영역이 구분되어 서로 영향을 주지 않고 개발 및 유지보수 가능
        • Model: Spring MVC 기반 웹 어플리케이션이 클라이언트로부터 요청을 받으면, 요청을 처리한 결과를 클라이언트에게 돌려주는데, 이 때 돌려주는 작업의 처리 결과 데이터
          • Service Layer: 클라이언트의 요청사항을 구체적으로 처리
          • Business Logic: 요청 사항 처리하기 위해 java 코드로 구현한 것
        • View: Model을 이용하여 화면에 보이는 리소스 제공(HTML 페이지 출력, pdf나 excel 등의 문서 형태로 출력, xml이나 json 등 특정 형식의 포맷으로 변환)
        • Controller: 클라이언트의 요청을 직접적으로 전달받는 endpoint, model과 view 사이에서 상호작용
          ![Spring MVC](<https://prod-files-secure.s3.us-west-2.amazonaws.com/cde84515-c58a-432e-96ba-fc090f132756/7ded13ae-1513-4663-b2ac-7d06b5401df6/Untitled.png>)
          
          Spring MVC
        
      • Thymeleaf 라이브러리
        • java 템플릿 엔진, html 생성 위해 사용
        • java 코드 삽입, 표현식을 통해 데이터를 동적으로 렌더링
      • IntelliJ
        • 젯브레인스(JetBrains) 사에서 제작한 Java 개발을 위한 툴
        • IntelliJ 혹은 IDEA 로도 불린다.
      • 로깅(logging)로그데이터에서 그 로