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

Hazel Park·2021년 2월 14일
1
post-custom-banner
  • 프로젝트 생성
  • 라이브러리 살펴보기
  • View 환경설정
  • 빌드하고 실행하기

프로젝트 생성

사전 준비물

  • Java 11 설치 (오픈소스인 OpenJDK 11 설치)
$ java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)

프로젝트 기본 템플릿 파일 다운로드

https://start.spring.io 접속

프로젝트 선택

Project: Gradle Project (Maven: 레거시 프로젝트)
Spring Boot: (강의 당시) 2.3.8 --> 현재 최신버전: 2.4.2
Language: Java
Packaging: Jar
Java: 11

Project Metadata

  • Group: hello (기업명)
  • Artifact: hello-spring (빌드 되어 나올 때 결과물)

Dependencies (사용할 라이브러리 선택)

  • Spring Web (웹 프로젝트)
  • Thymeleaf (HTML 템플릿 엔진)

프로젝트 구조

/src - main - java # 패키지, 소스코드
            - resources # java 파일 제외한 나머지
     - test
     - build.gradle # 설정파일. 버전설정. 라이브러리 땡겨옴

http://localhost:8080/ 페이지 띄우는 것 까진 했어요.
favicon이 크롬 브라우저 지구본으로 뜨는 문제가 있긴 하지만...

라이브러리 살펴보기

Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 하는 거예요.
이젠 과거처럼 웹서버(톰캣)을 별도로 설치할 필요가 없답니다.

스프링 부트 라이브러리

  • 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
      • slf4j(인터페이스) & logback(실제 로그를 어떤 구현체로 출력할것인지)

테스트 라이브러리

  • spring-boot-starter-test
    • junit: 테스트 프레임워크. (요즘은 JUnit 5 많이 사용)
    • mockito: 목 라이브러리
    • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

View 환경설정

Welcome Page 만들기

index.html 파일 생성

/src/main/resources/static/index.html

매뉴얼 검색 방법

  • https://spring.io/
    -> Projects > Spring Boot
    -> Learn > Documentation 2.4.2 (CURRENT) Reference Doc.
    -> Spring Boot Features
    -> "7.1.6. Welcome Page", "index.html" 검색

7.1.6. Welcome Page
Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an index template. If either is found, it is automatically used as the welcome page of the application.

출처

Thymeleaf(타임리프) 템플릿 엔진

7.1.9. Template Engines
As well as REST web services, you can also use Spring MVC to serve dynamic HTML content. Spring MVC supports a variety of templating technologies, including Thymeleaf, FreeMarker, and JSPs. Also, many other templating engines include their own Spring MVC integrations.
Spring Boot includes auto-configuration support for the following templating engines:

  • FreeMarker
  • Groovy
  • Thymeleaf
  • Mustache

(Package) 컨트롤러 생성

/src/main/java/com.broadenway.hellospring/controller

(Package) 컨트롤러 내에 Java Class 생성

/src/main/java/com.broadenway.hellospring/controller/HelloController

@Controller
  public class HelloController {
      @GetMapping("hello")
      public String hello(Model model) {
          model.addAttribute("data", "hello!!");
          return "hello"; // /src /resources/templates/hello.html로 이동
      }
}

템플릿 생성

/src/resources/templates/hello.html

http://localhost:8080/hello 접속 확인 완료!

컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다.

  • 스프링 부트 템플릿엔진 기본 viewName 매핑
  • resources:templates/ +{ViewName}+ .html

참고: spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.

빌드하고 실행하기

빌드하기

gradlew build

./gradlew build

빌드결과(jar 파일) 실행하기

java -jar

cd build/libs
java -jar hello-spring-0.0.1-SNAPSHOT.jar # hello-spring-0.0.1-SNAPSHOT.jar : 파일명 

주의
8080 포트 사용중인 경우 에러나므로 IDE 실행중인 것은 종료하고 실행

참고

./gradlew clean build # build 폴더 완전히 삭제하고 새로 빌드함
profile
금융에 진심인 개발자
post-custom-banner

0개의 댓글