사전 준비물
Java 11 설치
IDE : IntelliJ 또는 Eclipse 설치
저는 Java 19 버전, IntelliJ을 설치했습니다.
저는 윈도우입니다. 맥을 사용하시는 분들은 인프런 강의를 참고해주세요!
1. 프로젝트 생성
스프링 프로젝트 생성
스프링부트사이트 https://start.spring.io/
Project | Maven, Gradle 필요한 라이브러리를 가져와서 관리하는 tool 요새는 Gradle을 많이 사용한다 |
Language | Java 선택 |
Spring Boot | Snapshot은 데모버전, M1 또한 정식 버전은 아님. 버전만 적혀있는 것 중 제일 최신 것으로 선택 |
Project Metadata | Group : 기업 도메인명을 보통 기입 Artifact : 프로젝트명 |
Dependencies | 어떤 라이브러리를 가져와서 쓸 것인지 선택 - Spring Web : web을 만들 때 사용 - Thymeleaf : html을 만들어 줄 템플릿 엔진 |
모든 설정을 끝마친 후 Generate 클릭하여 프로젝트 생성
압축 해제 후 IntelliJ로 해당 폴더에 build.gradle 파일 오픈
처음 로딩하는 경우 라이브러리 설치하는 시간이 5분 정도 소요
설치된 프로젝트에 대한 설명
- .idea : IntelliJ가 사용하는 설정 파일
- gradle : gradle 관련 폴더
- src -> main, test : 요새는 기본적으로 main과 test 폴더로 나뉘어져 있는 것이 표준화
main -> resources : 실제 자바 코드 파일을 제외한 xml, html 등 설정 파일
test 폴더에는 test와 관련된 코드들. 요새 개발 트렌드에서는 test가 중요하다는 의미
- .gitignore : 필요없는 건 git에 올라가지 않게 해주는 파일
- 1~5번 라인 : 선택한 옵션에 대한 정보
- 7~9번 라인 : 작성한 Project Metadata에 대한 정보
- 11~13번 라인 : mavenCentral이라는 곳에서 라이브러리 다운
- 15~19번 라인 : 가져온 dependency. test 라이브러리가 자동으로 들어간다.(18번 라인)
실행
localhost:8080으로 들어가면 서버가 잘 돌아가고 있는 것을 확인할 수 있다.
이 화면이 나온다면 기본 환경 설정은 완료된 것이다!
서버 종료는 console창에 빨간네모 아이콘을 클릭해주면 된다.
Gradle을 통해서 Java가 실행될 경우 시간이 더 소요되기 때문에
File -> Settings -> 검색창에 Gradle -> Build and run using과 Run tests using을 IntelliJ IDEA로 변경해준다.
2. 라이브러리 살펴보기
External Libraries를 클릭해보면 가져온 라이브러리들을 확인할 수 있다.
Gradle이나 Maven은 의존관계가 있는 라이브러리를 함께 다운로드한다.
예를 들어 starter-web 라이브러리만 가져와도 자동으로 의존관계에 있는 tomcat까지 같이 가져온다.
좌측하단에 표시한 아이콘을 클릭하면 우측 세로측에 gradle이 가져온 라이브러리들이 나타납니다.
이제 라이브러리를 빌드해서 웹서버에 올리면 되는 개발 시대가 되었다..!
스프링 부트 라이브러리
spring-boot-starter-web | spring-boot-start-tomcat : 톰캣(웹서버) spring-webmvc : 스프링 웹 MVC |
spring-boot-starter-thymeleaf | 타임리프 템플릿 엔진(view) |
spring-boot-start(공통) | 스프링 부트 + 스프링 코어 + 로깅 sprint-boot spring-core spring-boot-starter-loggin logback, slf4j |
slf4j는 인터페이스 같은 것으로 로그를 어떤 구현체로 출력한건지를 정하는 도구이다. 성능도 빠르고 지원하는 기능도 좋다. logback과 함께 주로 쓰인다. logging은 spring boot를 사용하면 기본적으로 쓰는 것이다.
테스트 라이브러리
- spring-boot-starter-test
junit : 테스트 프레임워크. 4를 주로 사용하다가 최근에 5로 넘어가는 추세이다.
mockito, assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
spring-test : 스프링 통합 테스트 지원
현업에서는 로그를 남겨야 하기 때문에 System.out.println()은 잘 안쓰고 loging을 주로 사용한다.
3. View 환경설정
welcome 페이지 만들기
welcome 페이지란 도메인에 처음 접속했을 때 보여지는 페이지를 말한다.
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 에 접속해보면 아래와 같이 작성한 welcome 페이지가 잘 나온다.
- 스프링 부트가 제공하는 기능들이 엄청 많다.
- 필요한 기능들을 찾는 방법은 https://spring.io/ -> projects -> spring boot -> learn -> 해당 버전 클릭해서 원하는 기능을 ctrl + F 검색 기능을 사용하여 찾는다.
welcome 페이지 관련
thymeleaf 템플릿 엔진
템플릿 엔진을 사용하면 전달하는 데이터의 모양을 내가 원하는 모양으로 바꿔서 전달할 수 있다.
- thymeleaf 공식 사이트: https://www.thymeleaf.org/
스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/
스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-template-engines
src/main/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";
}
}
src/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>
서버를 다시 켜서 localhost:8080/hello에 접속해보면 hello.html이 아래와 같이 열린다.
동작 환경 그림
- 웹 브라우저에서 localhost:8080/hello를 던짐
- 스프링 부트는 톰캣 서버를 내장하고 있어서 서버에서 이걸 받아서 스프링 컨테이너한테 전달
- helloController에서 10번 라인에 @GerMapping("hello") 즉, hello를 전달받은 경우 아래 코드가 실행
- 11번~12번 라인 코드 설명 : spring이 data가 hello!인 값을 model에 넣어서 만듦
- 13번 라인 코드 : 그리고 나서 "hello"값을 return
- controller에서 return값으로 문자를 반환하면 viewResolver가 resources/templates 안에 "hello" 파일을 찾아서 실행
스프링 부트 템플릿엔진 기본 viewName 매핑
기본 viewName 형식 : `resources:templates/` + {ViewName} + `.html`
7. hello.html 코드에 ${data}에는 model에 data값인 hello!가 들어가게 됨
spring-boot-devtools 라이브러리를 추가할 경우
html파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.
4. 빌드하고 실행하기
1. cmd에서 hello-spring폴더로 이동
- dir 명령어 실행 시 gradlew, gradlew.bat 파일이 보이면 잘 이동한 것
2. gradlew
3. gradlew.bat build
4. cd build
5. cd libs
6. java -jar hello-spring-0.0.1-SNAPSHOT.jar
localhost:8080 들어가서 잘되면 성공!
잘 안될 경우 hello-spring 위치에서
- gradlew clean
- gradlew clean build
위 명령어를 통해서 지우고 다시 build하면 됨
서버 배포할 때는 파일만 복사해서 서버에 넣어주고 java-jar로 실행하면 된다.
'JAVA > [인프런] 스프링 강의들' 카테고리의 다른 글
[인프런] 스프링 입문 강의 Section3. 회원 관리 예제 - 백엔드 개발 (1) | 2023.07.03 |
---|---|
[인프런] 스프링 입문 강의 Section2. 스프링 웹 개발 기초 (0) | 2023.07.03 |
[서버 개발 올인원 패키지] 7. 생애 최초 배포하기 (0) | 2023.04.16 |
[ 서버 개발 올인원 패키지] 6. 생애 최초 배포 준비하기 (0) | 2023.03.09 |
[ 서버 개발 올인원 패키지] 5. 책 요구사항 구현하기 (0) | 2023.02.26 |