[Spring] 1. 프로젝트 환경설정

developer-shkim·2021년 6월 26일
0

Spring 입문 강의

목록 보기
1/6
post-thumbnail

⌜스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술⌟(김영한, 인프런)
(강의 자료를 요약 및 발췌하였고, 김영한 강사님께 양해를 구한 후 작성했습니다.)

프로젝트 생성

  • spring initializr 에서 프로젝트 생성
  • Spring Boot > 'snapshot'은 만들고 있다는 의미

프로젝트 구조

  • .idea => intelliJ 설정 파일
  • gradle > wrapper => gradle 관련 폴더
  • src > main, test => 기본적으로 테스트 폴더가 생성된다. (테스트 코드 중요)
  • build.gradle 에서 버전 설정하고 라이브러리 땡겨온다.

프로젝트 실행

  • localhost:8080 -> Error
  • 아예 끄면 사이트에 연결할 수 없다.
  • main 메소드 실행하면 스프링 부트 애플리케이션 띄우고,
  • 내장된 톰캣 웹서버를 자체적으로 띄우면서 스프링 부트가 같이 올라온다.

Tip

  • 빨간 박스의 옵션을 intelliJ IDEA 로 선택한다.
  • gradle 통하지 않고 intellij 에서 바로 java 띄워서 돌리므로 속도가 향상된다.

라이브러리

스프링 부트 라이브러리

1) spring-boog-starter-web

  • gradle 이 우리는 이 라이브러리만 필요하지만 이것이 필요로하는 라이브러리들을 다 땡겨온다.
  • spring-boot-starter-tomcat: 톰캣(내장 웹서버)
    • 소스 라이브러리에서 웹 서버를 들고 있다. = 임베디드
    • 실행하면 웹 서버가 뜬다.
    • 라이브러리 하나 빌드해서 웹 서버에 올리면 끝난다.
  • spring-webmvc: 스프링 웹 MVC

2) spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)

3) spring-boot-starter

  • 스프링 부트 + 스프링 코어 + 로깅
  • spring boot
    • spring-core
  • spring-boot-starter-logging
    • logback: 로그를 어떤 구현체로 출력
    • slf4j: 인터페이스

테스트 라이브러리

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

Welcome Page

index.html

resources/static/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>
  • resources/static 에 index.html 올려두면 자동으로 설정된다.

진입점 Controller

java/hello/hellospring/controller/HelloController.java

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", "test!!");
        return "hello"; // resources/templates/"hello" 찾아서 렌더링
    }
}

thymleaf 템플릿

resources/templates/hello.html

<!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>

동작 환경

  • Controller 에서 리턴값으로 문자를 반환하면 viewResolver 가 화면 찾아서 처리
    • spring boot 템플릿엔진 기본 viewName 매핑
    • resources/templates/ + {ViewName} + .html
  • spring-boot-devtools 라이브러리 추가 -> 서버 재시작X html만 재컴파일하여 view 파일 변경 가능
  • IntelliJ 에서 build + Recompile (⇧+⌘+F9)

빌드하고 실행하기

➜  hello-spring ./gradlew build		# 빌드, build 폴더 생성
➜  hello-spring cd build/libs		# hello-spring-0.0.1-SNAPSHOT.jar 생성
➜  libs java -jar hello-spring-0.0.1-SNAPSHOT.jar	# 실행
  • http://localhost:8080/ 에서 확인한다.
  • 잘 되지 않을 때는 ./gradlew clean build build 폴더를 지우고 새롭게 build 한다.

소스 코드

profile
기록하고 기억하자!

1개의 댓글

comment-user-thumbnail
2021년 6월 27일

초기 세팅방법 잘 보고 갑니다!

답글 달기