스프링 부트는 스프링 프로젝트를 쉽게 만들 수 있게 한다.
maven과 gradle을 선택할 수 있는데, 요즘은 gradle로 많이 넘어가는 추세.
언어는 자신이 사용 할 언어를 추가하면 된다. 듣고 있는 강의는 Java를 사용하기 때문에, Java 선택
버전은 안정화 된 버전을 사용하는 것이 좋은데, Snapshot / M1,M2가 붙어있지 않은 버전이 안정화 된 버전이라고 생각하면 된다.
Project Metadata는 그룹과 아티팩트를 입력해줘야 하는데, 회사 프로젝트를 진행한다면 회사에서 정해주는 대로 입력을 하면 되지만, 포트폴리오나 개인 연습용 프로젝트라면, 그냥 입력하고 싶은대로 입력해도 상관없다.
Dependencies는, 의존성이란 뜻을 가지고 있고 어떠한 라이브러리를 의존해서 사용할 것인가라는 의미를 가지고 있다. 사용을 할 라이브러리를 추가해서 프로젝트를 만들면 된다.
해당 강의에서는 Spring Web, Thymeleaf, Spring Data JPA, H2 Database, Lombok을 사용
GENERATE 버튼을 눌러서 다운로드를 받고 압축을 풀어준 다음 intellij로 프로젝트를 열어주면 gradle에 dependencies에 추가되어 있는 라이브러리를 설치하는 작업을 진행하게 된다.
Lombok을 사용하기 위해서는, intellij에서, annotation processors에서 Enable annotation processing을 클릭해야 한다. 그리고 해당 강의에서는 Lombok 플러그인을 설치했지만, intellij 2020.3 이후 버전은, lombok이 설치되어 있는 상태이기 때문에 설치하지 않아도 된다.
라이브러리 의존성을 살펴보는 방법은 2가지가 있다.
/.gradlew dependencies
입력하면 의존성을 살펴볼 수 있다.thymeleaf 라는 템플릿 엔진을 이용해서, View를 만들어 준다. thymeleaf 홈페이지에 들어가면 thymeleaf에 대한 내용들을 자세히 볼 수 있다.
thymeleaf의 장﹒단점
<br>
태그를 사용 할 경우, 오류가 생긴다. 보통 html 템플릿에서는 <br>
만 사용해도, 알아서 한 칸 띄워주는데, thymeleaf는 <br></br>
이렇게 사용해야 오류가 안생긴다고 한다. 그리고 메뉴얼을 잘 살펴봐야된다는 것도 단점이라고 강의에서는 말을 하셨다.Spring을 잘 모르겠다면, 홈페이지에 들어가서 guides를 살펴보는 것을 권장한다.
기본구조 코드
[HelloController.java]
package jpabook.jpashop;
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";
}
}
resources / templeates
폴더에 있어야 한다.resources / templeates / hello.html
파일에 data 라는 값이 있다면, "hello!!!" 로 대체하겠다 라는 것과 같다.[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>
정적인 페이지 또한 만들 수 있다. resources / static 폴더에 html 파일을 만들면 정적인 페이지를 만들 수는 있지만, 정적 페이지는 javascript는 사용하지 못한다는 점이 있다.
node.js에서 nodemon 처럼은 아니지만, 저장을 하고 다시 run을 하지 않아도 페이지를 새로 수정할 수 있는 방법이 있다.
implementation 'org.springframework.boot:spring-boot-devtools'
build -> recomplie "hello.html
을 클릭하면 바뀐다.H2 데이터베이스는 개발이나 테스트 용도로 가볍고 편한 DB, 웹 화면을 제공한다.
주의점은 h2 database 라이브러리와 같은 버전을 사용해야 한다는 점이다. 홈페이지 링크
다운로드를 받았다면 Mac OS는 압축을 풀고 폴더를 보면 bin 폴더가 있다. bin 폴더의 경로를 터미널에 맞춰놓고, ls를 입력하면 h2.bat, h2.sh와 같은 파일이 있는데, $ cat h2.sh
를 입력한다.
그리고, ./h2.sh
입력을 한다. 하지만 난 오류가 났다. zsh: permission denied: ./h2.sh
라는 오류가 떴는데, chmode 755 h2.sh
를 입력하고, 다시 ./h2.sh
를 입력하면 브라우저에 H2 콘솔이 뜨게 된다.
그리고 JDBC_URL에 jdbc:h2:~/jpashop
으로 입력하고 연결을 누르면 db 파일이 생성이 된다. 그리고 연결을 끊고, 터미널 상에 home에 가서 ls -arith
를 입력하면, jpashop.mv.db
파일이 있는 것을 볼 수 있다. 이 파일이 있다면, jdbc:h2:tcp://localhost/~/jpashop
이 경로로 접근이 가능하다.
주의할 점은, ./h2.sh를 실행시킨 상태여야만 db 파일을 받을 수 있다는 점 명심하자!
앞으로 강의듣고 난 이후의 블로그는 어려운 내용이나 에러 해결방법들만 적을 예정이다. 코드를 적으면 강의에 피해가 가기 때문이다.