본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다.
1. 프로젝트 생성
1) 스프링 부트를 통해 스프링 프로젝트 생성
- Project
Maven → Gradle로 넘어오는 추세. Gradle Project 추천
생성할 프로젝트의 빌드 자동화 툴을 선택한다.
- Language
생성할 프로젝트에서 사용할 언어를 선택한다.
- Spring Boot
생성할 프로젝트의 스프링 부트 버전을 선택한다.- SNAPSHOT: 현재 만들고 있는 버전
- M1: 정식 출시되지 않은 버전
- Project Metadata
- Artifact: 빌드된 결과물
- Packaging:
- Java: 자바 버전
- Dependencies
프로젝트에서 사용할 라이브러리
웹 어플리케이션을 개발할 예정이므로 Spring Web과 Thymeleaf를 선택한다.
💡 Java 버전과 Spring Boot 버전 호환성
Spring Boot 3.x가 출시됨에 따라 Spring Boot 3.0 이상의 버전을 사용하기 위해서는 자바 17 이상을 사용해야 한다.
2) 다운받은 프로젝트를 Intellij를 통해 Open
다운받은 프로젝트 폴더 내의 build.gradle을 선택하여 open한다.
3) Java 11 다운로드
🔗 참고자료
4) HelloSpringApplication 파일 실행
파일을 실행하면 톰캣 웹서버가 8080 포트에 열린다. localhost:8080에 접속하면 다음과 같은 페이지가 뜬다.
2. 라이브러리 살펴보기
Gradle은 하나의 라이브러리를 설치할 때 의존관계가 있는 라이브러리들도 함께 설치하여 관리해준다.
우측 상단의 Gradle을 클릭하여 Dependencies를 확인할 수 있다.
1) 스프링 부트 라이브러리
- 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
2) 테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
3. View 환경설정
1) Welcome 페이지 만들기 (정적 파일)
스프링부트는 index.html 파일을 찾아서 Welcome 페이지로 적용한다.
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.
- src/main/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>
localhost:8080에 접속하면 다음과 같이 페이지가 성공적으로 나타나는 것을 확인할 수 있다.
2) 템플릿 엔진 (동적 파일)
정적이 아닌 동적 웹 페이지를 만들기 위해 템플릿 엔진을 사용한다.
스프링 부트에서는 총 4가지의 템플릿 엔진을 사용할 수 있다. 강의에서는 Thymeleaf를 사용한다.
1. 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") // GET 메서드로 /hello에 접속했을 때 아래 메서드를 호출한다.
public String hello(Model model) { // controller에서는 model에 데이터를 담아 view로 보낸다.
model.addAttribute("data", "hello!!");
return "hello"; // 문자열을 반환한다.
}
}
-
- @Controller
컨트롤러에서는 해당 어노테이션을 달아야 한다. - @GetMapping("hello")
localhost:8080/hello로 요청이 들어오면 컨트롤러에서 @GetMapping("hello") 아래의 메소드를 호출한다. - return "hello";
컨트롤러에서 문자를 리턴하면 뷰 리졸버(viewResolver)가 해당 화면을 찾아서 처리한다.
→ 스프링부트 템플릿엔진 기본 viewName에 매핑한다.
→ resources/templates/{viewName}.html
- @Controller
2. resources/templates/hello.html 파일 작성
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") // GET 메서드로 /hello에 접속했을 때 아래 메서드를 호출한다.
public String hello(Model model) { // controller에서는 model에 데이터를 담아 view로 보낸다.
model.addAttribute("data", "hello!!");
return "hello"; // 문자열을 반환한다.
}
}
-
- <html xmlns:th="http://www.thymeleaf.org">
th가 thymeleaf를 뜻한다. - <p th:text="'안녕하세요. ' + ${data}"> 안녕하세요. 손님 </p>
HelloController에서 attribute로 추가한 data가 사용된다.
- <html xmlns:th="http://www.thymeleaf.org">
3. 테스트 - localhost:8080/hello 접속
hello.html 파일에 작성한 내용을 확인할 수 있다.
💡 devtools 라이브러리
spring-boot-devtools 라이브러리를 추가하면 html 파일만 컴파일 할 경우 서버 재시작 없이 View 파일을 변경할 수 있다. 컴파일 방법: build → Recompile
3. 빌드하고 실행하기
1) 빌드
프로젝트 내의 gradlew.bat 파일이 있는 경로로 이동하여 ./gradlew build 명령어를 실행한다.
빌드 결과로 /build/libs 하위에 hello-spring-0.0.1-SNAPSHOT.jar 파일이 생성되었다.
2) 실행
빌드 결과로 생성된 hello-spring-0.0.1-SNAPSHOT.jar 파일을 실행시킨다.
java -jar hello-spring-0.0.1-SNAPSHOT.jar
💡 서버에 배포할 때엔 빌드 후 .jar 파일만 복사하여 서버에 넣고 java -jar로 실행시키면 된다.
'Courses > Spring' 카테고리의 다른 글
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 6. 스프링 DB 접근 기술 (0) | 2023.09.24 |
---|---|
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 5. 회원 관리 예제 MVC 개발 (0) | 2023.09.24 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 4. 스프링 빈과 의존관계 (0) | 2023.09.21 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 3. 회원 관리 예제 - 백엔드 개발 (0) | 2023.09.21 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 2. 스프링 웹 개발 기초 (0) | 2023.09.21 |