원본출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
우아한형제들 최연소 기술이사 김영한의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의
초반 부분 정리출처 : https://dmaolon00.tistory.com/121
스프링완전 정복 로드맵
-스프링입문
-스프링 핵심원리
-스프링 웹MVC
-스프링 DB데이터 접근기술
-실전! 스프링부트
# 버전 수정 이력
## v2021-12-01
*주의!*
h2 데이터베이스는 꼭 다음 링크에 들어가서 *1.4.200* 버전을 설치해주세요.
최근에 나온 2.0.206 버전을 설치하면 일부 기능이 정상 동작하지 않습니다.
프로젝트 생성
사전준비물
java11설치
IntelliJ설치
예전엔 이클립스를 다 사용했지만 너무 편리하고 좋아서 요즘은 intellJ를 많이사용한다
스프링부트스타터사이트로 이동해서 스프링프로젝트 생성
http://start.spring.io
프로젝트선택
Project : Gradle Project (요즘추세는 Gradle)
SpringBoot : 2.3x (SNAPSHOP - 아직 만들어지고있는 버전, M1-정식릴리즈버전이아니다)
Snapshot → M (Milestone) → RC (Release Candidate) 순으로 개발이 완료되어 가는 단계를 의미하고, 맨 마지막 단계쯤에서는 거의 개발 완료로 더이상 버그가 없다면 그대로 출시된다.
Language : java
Package : jar
java : 11
Project Metadata
groupId : hello
artifactId : hello-spring
Dependancies : Spring Web, Thymeleaf (html템플릿엔진임)
Generate > 다운로드 > intelliJ로 Open > hello-spring열기
Build는 코드를 컴파일, 패키징, 테스트. 배포 등의 작업들을 말한다.
Build Tool 이란 말 그대로 Build를 도와주는 도구로, 작업들을 일관되게 할 수 있다.
Maven VS. Gradle 고르기
여기서 Maven 과 Gradle을 선택할 수 있다.
Maven으로 프로젝트를 생성하게 되면 pom.xml이 생성되고, Gradle로 프로젝트를 생성하게 되면 build.gradle, settings.gradle이 생성된다.
- Maven은 정형화된 빌드 시스템으로, 플러그인으로 구동되어 build를 진행하게 된다.
- Gradle은 JVM 기반의 빌드 시스템으로, Task 기반으로 작업을 수행한다. Task는 종속성에 따라서 다음 작업을 연결하여 수행한다. 캐시를 이용하여 더 시간이 단축된다.
- JAR (Java ARchive) 은 Class(자바 리소스, 속성파일), 라이브러리 압축 파일로 JRE(Java Runtime Environment)만 있어도 실행 가능하다.
- WAR (Web application ARchive) 은 Servlet / Jsp 컨테이너에 배치할 수 있는, 웹 애플리케이션을 구성할 때의 필요한 요소들의 압축 파일로, WEB(웹서버) 혹은 WAS(웹 컨테이너)가 필요하다
- +) EAR (Enterprise ARchive) 은 모든 파일 포함
Dependencies
추가하고자 하는 라이브러리를 편리하게 넣을 수 있다. 이번 실습에서는 Spring Web과 Thymeleaf를 넣어준다.
추후에는 여러가지 많이 넣어서 편리하게 사용한다.
- .idea : Intellij가 사용하는 설정 파일
- resources : html, css, js 등
- test : 테스트 코드 관련 파일
- build.gradle : 라이브러리 등의 내용이 포함되어 있음
- .gitignore : git에 올라가지 않을 파일 설정 가능
라이브러리 살펴보기
Gradle은 라이브러리의 의존 관계를 정리해주어 필요한 것들은 모두 자동으로 추가되어 있다.
1. 스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat : 톰캣 (웹 서버)
- spring-webmvc : 스프링 웹 MVC (Model, View, Controller)
- spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진 (View)
- spring-boot-starter (공통) : 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
- spring-boot
- spring-boot-starter-test
- junit : 테스트 프레임워크
- mockito : mock 라이브러리
- assertj : 테스트 코드 작성에 도움이 되는 라이브러리
- spring-test : 스프링 통합 테스트 지원
View 환경설정
Welcome Page 만들기
resources/static/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello</title>
</head>
<body>
<!--헬로라고적고 -->
Hello
<!--hello라는 경로로 이동하게했다-->
<a href="/hello">hello</a>
</body>
</html>
스프링부트가제공하는 WelcomePage기능
resources/static 안에 index.html 을 넣어주면 WelcomePage로 지정해준다 *도메인만 누르고 들어왔을때 첫화면
스프링문서 - WelcomePage
https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page
[ spring.io > Projects > Spring Boot > Learn > 2.4.5 Reference Doc. > Spring Boot Features > 검색 : index.html ]
Thymeleaf 템플릿엔진 (루프를넣거나해서 모양을바꿀수있다)
thymeleaf 공식사이트 : https://www.thymeleaf.org/
java/hello.hellospring > controller pakage 생성 >HelloController 자바 클래스 생성
package com.mytestspring.mytestspring.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){
/*"data" 라는 key 와 "hello!!"라는 value*/
model.addAttribute("data", "hello!");
return "hello";
}
}
templates/hello.html
<!DOCTYPE html>
<!--타임리프문법사용할수있게해줌-->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello</title>
</head>
<body>
<!--타임리프의 th-->
<p th:text="'안녕하세요' +${data}">안녕하세요.손님</p>
</body>
</html>
컨트롤러에서 리턴값으로 문자를 반환하면 뷰 리졸버(viewResolver) 가 화면을 찾아서 처리한다.
- 스프링부트 템플릿엔진 기본 viewName 매핑
- resources:templates/ + (ViewName) + .html
참고: spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작없이 View파일 변경가능
인텔리제이 컴파일 방법 : build → Recomplie
'STUDY > SpringBoot' 카테고리의 다른 글
[SpringBoot] 스프링 입문 - 김영한 ✔정리(2) (0) | 2022.08.02 |
---|---|
[StringBoot] Thymeleaf 문법! 정리✔ (0) | 2022.08.02 |
[SpringBoot] gradle 배포 + 클라우드 배포 (0) | 2022.08.01 |
[SpringBoot] BootStrap 레이아웃 정리✔ [2] (0) | 2022.07.31 |
[SpringBoot] 22-07-28 SpringBoot 간단 게시판 예제 ☑ (0) | 2022.07.29 |