<스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술>

  • 인프런 김영한님 강의 필기
  • 개발 환경 - Java 11, IntelliJ


프로젝트 환경 설정

  1. Spring / Spring Boot
  2. Spring Initializr로 프로젝트 생성
  3. IntelliJ
  4. 프로젝트 구동 확인
  5. Gradle 라이브러리 살펴보기
  6. View 환경설정
  7. Thymeleaf 템플릿 엔진
  8. 동작 환경 그림
  9. 프로젝트 파일 구조
  10. 빌드하고 실행하기

1. Spring / Spring Boot

  • Spring: 웹 어플리케이션을 만들 수 있는 자바 기반의 프레임워크
  • Spring Boot: 스프링을 더 쉽게 이용하기 위해 이것저것 세팅해주는 도구

2. Spring Initializr로 프로젝트 생성

https://atoz-develop.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0-Spring-Initializr-%EC%9B%B9-%EB%8F%84%EA%B5%AC-%EC%82%AC%EC%9A%A9

+) Spring Initializr - Gradle

  • Maven, Gradle은 프로젝트에 필요한 라이브러리를 관리하고 빌드 라이프사이클을 관리해주는 툴
  • 최근에는 Maven보다 Gradle을 사용하는 추세
  • 스프링 라이브러리 관리 자체도 최근에는 Gradle

+) Spring Initializr - Add Dependencies

  • Spring 기반으로 프로젝트를 할때, 어떤 라이브러리를 가져다 쓸지 선택하는 기능
  • ex) 웹 프로젝트용 Spring Web, html 만들어주는 템플릿 엔진 Thymeleaf

+) 프로젝트 선택
Project: Gradle Project
Spring Boot: 뒤에 () 붙은거 제외 Up to date
Language: Java
Packaging: Jar
Java: 11

Project Metadata
groupId: hello
artifactId: hello-spring
Dependencies: Spring Web, Thymeleaf


3. IntelliJ

  • Java 개발툴(IDE) 3가지 중 하나 (Eclipse, NetBeans, IntelliJ)
    //////////////////////////
  • 위에서 Generate로 다운로드받은 파일 -> IntelliJ에서 build.gradle 오픈 (open as proj)
  • 안에 파일구조 보면, gradle, src 두개로 나뉨
    src - main (java, 리소스(java 제외 나머지 html 등) 있음)
    src - test (테스트 코드, 요새 중요)
  • build.gradle - 예전과 다르게 개발자 편의를 위해 만들어진 설정 파일, plugins, repositories(오픈소스 공유 저장소), dependencies, test 등 적혀있음
    (gradle -> 버전 설정하고 라이브러리 땡겨오는 거)

4. 프로젝트 구동 확인

  • src - main - java - Application - main 메소드 실행
  • 웹 - localhost:8080 검색했을 때 아래면 성공
  • main 메소드 실행하지 않았을 때,


5. Gradle 라이브러리 살펴보기

  • IntelliJ 좌측 하단 아이콘 누르면 우측에 gradle 탭 나옴

  • dependencies - compileClasspath 처음 프로젝트 생성때 추가한 spring web, thymeleaf 라이브러리 있음, 의존성 라이브러리 줄줄이 가져옴
  • web 관련 라이브러리 - 내장된 tomcat 웹서버 사용, 즉 프로젝트에 웹서버를 따로 설정하지 않아도 기본적으로 웹서버 사용 가능
  • starter 관련 라이브러리 - logging 관련 사용 - logback, slf4j
  • testCompileClasspath - test 관련 라이브러리 - junit, mockito, assertj

<정리>

  • 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 : 스프링 통합테스트 지원

6. View 환경설정

  • 스프링 부트가 제공하는 Welcome Page 기능 확인
  • src - main - java - resources - static - index.html 생성 (Welcome Page 설정)
<!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>
  • 다시 run해서 서버 실행시키면, 웹페이지 반영됌


7. Thymeleaf 템플릿 엔진

  • 추가한 thymeleaf 템플릿 엔진 동작 확인
  • main - java - hello - hellospring - controller 패키지 생성 - HelloController 클래스 생성
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";
    }
}
  • main - 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>
  • 위 Welcome page에 hello 링크 클릭하면,
  • 컨트롤러 맵핑 확인 가능

8. 동작 환경 그림

  • 웹브라우저에서 웹서버에 요청 후 응답받는 그림
  • 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리함
    • 스프링 부트 템플릿엔진 기본 viewName 매핑
    • resources:templates/ +(ViewName)+ .html

+) spring-boot-devtools 라이브러리 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경 가능
+) IntelliJ 컴파일 방법: 메뉴 build → Recompile
+) 라이브러리 추가 방법: https://zangzangs.tistory.com/149

9. 프로젝트 파일 구조


10. 빌드하고 실행하기

  • IntelliJ 터미널 - alt + f12
  • cd hello-spring/build
  • ./gradlew build (빌드)
  • cd build/libs
  • java -jar .\hello-spring-0.0.1-SNAPSHOT.jar (실행)
  • localhost:8080에서 서버실행 확인 가능 (플젝 run하면 8080포트 사용중이라 뜸)

<정리>

  • 플젝 build한 다음에 build/libs에 있는 java 실행파일 배포 가능
profile
Backend Web Developer

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN