다음의 모든 내용은 김영한님의 스프링 입문 강의에서 가져온 것임을 밝힙니다.
Java 11을 사용했고 , IDE로는 IntelliJ를 사용했다.
이후 프로젝트에서는 3.0 이상 버전의 Spring Boot를 사용하기 위해 Java 17로 변경했다.
스프링부트 스타터 https://start.spring.io를 이용!
프로젝트에 맞게 설정한 후 Generate
를 클릭하면 .zip 파일이 다운로드 된다.
Gradle - Groovy
Java
이후 프로젝트는 Java 17로 변경하여 3.0 이상 버전을 사용했다.
- 3.0 이상 버전은 javax 패키징 이름이
javax
.~가 아니라jakarta
.~이어야 한다! 예를들어,javax
.persistence.Entity =>jakarta
.persistence.Entity- H2 데이터베이스를
2.1.214 이상
의 버전으로 사용해야 한다!
강의에서는 다음의 두가지를 선택했다.
Spring Web
: Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.Thymeleaf
: A modern server-side Java template engine for both web and standalone environments. Allows HTML to be correctly displayed in browsers and as static prototypes.3.0 이상 버전에서는
Validation
도 반드시 추가해야 하며,Lombok
도 추가하면 좋다!
- Validation : Bean Validation with Hibernate validator.
- Lombok : developer tool! Java annotation library which helps to reduce boilerplate code.
<jpa 활용> 강의에서는
H2 Database
,Spring Data JPA
도 추가했다.
build.gradle
실행라이브러리 다운을 위한 시간이 조금 소요된 후, 생성된 파일은 다음과 같다.
생성된 프로젝트는 다음과 같이 main
과 test
로 나눠져 있다.
build.gradle
파일에는 1번에서 설정한 것들이 저장되어 있다. 이런 것들을 일일이 입력하지 않아도 되는 것이 스프링 부트의 장점인 것!
참고로 12행의 mavenCentral()은 해당 사이트에서 라이브러리들을 다운로드 받으라는 것이다. 특정 사이트 url을 넣을 수도 있다.
git에 올라가면 안 되는 것들도 자동으로 생성되어 있다.
.gradle
과.idea
는 IntelliJ에서 자동으로 생성되는 것들이므로 제외한다.
다음과 같이 자동 생성되어 있다. 단순히 실행시키면 된다!
8080 포트에 생성되었다.
스프링부트는 Tomcat이라는 웹서버를 내장하고 있다.
localhost:8080
를 확인하면 다음과 같이 사이트를 볼 수 있다! (아직 아무것도 없으니 에러 페이지다)
Gradle은 의존관계가 있는 라이브러리도 함께 다운로드 한다!
화면 우측 상단의 Gradle
을 클릭하면 Dependencies
를 확인할 수 있다.
이제는 에러페이지가 아닌 간단한 페이지를 만들어보자.
스프링부트는 Welcome 페이지(첫 화면)로 index.html
파일을 이용한다!
💡스프링부트의 공식 메뉴얼은?
1. https://spring.io
2. project> Spring boot> learn 에서
3. 버전에 맞는Referenc Doc.
( •̀ ω •́ )✧검색으로 필요한 것들을 찾는 연습을 하자! 참고로 welcome 페이지 내용은 'Web' 섹션에 있다.
<!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
에서 첫 화면에 Hello라는 문자와 링크가 성공적으로 나타난다 (✿◡‿◡)
본격적으로 동적인 웹을 만들기 위해 템플릿 엔진을 사용해보자!.
Tymeleaf
스프링부트에서는 3가지의 템플릿엔진을 사용할 수 있다. (아래 공식문서 참고)
강의에서는 Tymeleaf를 사용하여/hello
페이지를 만들어보았다.
다음과 같은 HelloController
를 작성했다. 하나씩 뜯어보자!
@Controller // 컨트롤러에는 이 애노테이션을 달아주어야 한다.
public class HelloController {
@GetMapping("hello") // '/hello'일 때 아래 메소드를 호출
public String hello(Model model){ // controller에서는 Model에 데이터를 담아 view로 보낸다.
model.addAttribute( "data", "hello!!");
return "hello"; // 문자열 return
}
}
localhost:8080/hello 가 요청되면
Controller
에서 @GetMapping("hello") 아래의 메소드가 실행된다.
controller에서 문자(hello)를 return 하면,
resources/templates/
하위의문자.html
파일을 불러온다.
hello.html
파일
<html xmlns:
th=
"http://www.
thymeleaf.
org">
으로 선언한 후,
바디에서<p th:text="'안녕하세요. ' + ${data}"> 안녕하세요. 손님 </p>
<!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>
<!--th가 tymeleaf를 뜻함-->
<!--HelloController에서 attribute로 사용한 data가 여기서 쓰임-->
<p th:text="'안녕하세요. ' + ${data}"> 안녕하세요. 손님 </p>
</body>
</html>
localhost:8080/
hello
을 입력하면
hello.html 파일에 입력한 내용들이 나타나는 모습이다 ♪(´▽`)
spring-boot-devtools
라이브러리 추가하면
서버 재시작 없이도 html 파일 리컴파일만으로 View 파일 변경이 가능하다!
dependencies {
(생략)
implementation 'org.springframework.boot:spring-boot-devtools'
}
서버 재시작시 restartedMain
이라고 뜬다면 devtools가 잘 작동하고 있는 것이다.
cmd 창에서 gradle.bat 파일이 있는 위치로 이동하여
$gradlew build
이제 /build/libs 하위에 hello-spring-0.0.1-SNAPSHOT.jar
파일이 생성되었으니, 실행만 시키면 된다!! (ノ◕ヮ◕)ノ*:・゚✧
../build/libs
로 이동하여
$java -jar hello-spring-0.0.1-SNAPSHOT.jar
서버
배포
시에는 빌드 후 .jar 파일만 복사하여 서버에 넣고,
java-jar 으로 실행하면 된다.