프로그래밍/Spring

[Spring] 입문 - 1. 환경설정

daykim 2022. 5. 20. 15:36
김영한 스프링 입문 강의 정리

목차

  • 프로젝트 생성
  • 라이브러리 살펴보기
  • View 환경설정
  • 빌드하고 실행하기

 

환경설정

  • IntelliJ
  • JDK 11

프로젝트 생성

Spring Initializr

https://start.spring.io/

  1. Maven(과거), Gradle(요즘 추세) 선택
    • 필요한 라이브러리를 가져오고, 빌드하는 lifecycle까지 관리해주는 tool
  2. spring boot ver.
    • snapshot, Mn -> 미완성 정식 release 안 됨
  3. Group : 기업 도메인 명
  4. artifact : 빌드 결과물
  5. name, description, packaging : 그대로 해도 상관 없다.
  6. dependencies : 프로젝트 시 어떤 라이브러리를 가져와 사용할
    • add dependencies 버튼클릭
    • spring web, thymeleaf(html 템플릿 엔진) 선택
  7. generate 버튼 클릭  후 다운 받음
  8. 압축 해제 후 intellij에서 open

IntelliJ에서 open


실행 시 에러 처리

실행 화면


실행속도 빠르게

  • 아래와 같이 설정을 변경하면 Gradle을 통하지 않고 바로 IntelliJ에서 실행시키기 때문에 훨씬 빠르게 실행된다.

 

라이브러리 살펴보기

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
    • logback, slf4j

테스트 라이브러리

spring-boot-starter-test

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

 

View 환경설정

src > main > resources > static에 file 추가

<!-- index.html -->
<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    Hello
    <a href="/hello">hello</a>
</body>
</html>

위의 파일 추가하면 localhost:8080 실행 화면

이는 스프링부트가 제공하는 Welcome Page 기능이다.

  • src/main/resources/static 에 파일 올려두면 Welcome Page 기능을 제공

스프링에서 필요한 기능을 찾는게 중요하다.

필요한 기능 찾기

  1. spring.io에 들어간다.
  2. Projects 탭에 Spring Boot 클릭
  3. LEARN 탭 클릭
  4. 현재 버전 옆에  Reference Doc. 버튼 클릭
  5. 필요한 기능 찾기

 

동작하는 화면 만들기

  • web application에서 첫 번째 진입점이 Controller
  • 코드
package hello.hellospring.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!!");
        return ("hello");
    }
}
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
<!-- th == thymeleaf -->

thymeleaf 템플릿엔진 동작 확인

  • 톰캣 서버에서 스프링으로 hello 보냄
  • Controller의 getMapping을 통해 hello에 매칭된다.
  • 매칭된 Method 실행
    • 스프링이 model이란걸 만들어 넘겨줌
    • return "hello" : templates 파일의 hello.html 파일을 찾아가 렌더링 하라는 의미

뷰 리졸버 (viewResolver)

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

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

 

빌드하고 실행하기

빌드 방법 (window)

1. CMD 창 실행

2. 프로젝트 폴더 위치에서 ./bradlew.bat build 입력

3. cd build/libs

  • .jar 파일이 만들어져 있다.

4. java -jar FILENAME.jar

5. localhost:8080 창이 나오면 성공

빌드 잘 안 될 때

./gradlew.bat clean build 입력시 완전히 삭제 후 재 build