프로젝트 생성
스프링 부트란?
- 스프링 프레임워크를 사용하는 프로젝트를 아주 간편하게 설정할 수 있는 스프링 프레임워크의 서브 프로젝트라고 할 수 있다.
- Spring Boot makes it easy to create stand-alone
단독 실행 가능한 스프링 애플리케이션을 생성한다.
- 웹 컨테이너를 내장하고 있어 최소한의 설정으로 쉽게 웹 어플리케이션을 만들 수 있다.
스프링 부트를 왜 사용해야 하나? 장점?
- 스프링 프레임 워크를 사용하면 많은 xml 설정파일 등을 작성 하는 등 설정하는 방법이 어려운 편이기 때문에 보통 기본 설정 파일을 구성하는데 몇 날 몇 일이 걸렸다. 하지만 스프링 부트는 반복되는 개발환경 구축을 위한 코드작성등의 노력을 줄여주고 쉽고 빠르게 프로젝트를 설정할 수 있도록 도와준다.
- 프로젝트 환경 구축 시 비기능적인 기능도 기본적으로 제공한다.(내장형 서버, 시큐리티, 측정, 상태 점검 등)
스프링 부트 스타터(https://start.spring.io/) 란?
설정 화면 | 설명 |
![]() |
지속적으로 버전 업을 진행하고 있다. - GroupId : GrouId는 자신의 프로젝트를 식별해주는 고유 아이디 com.cjy.web'과 같이 인터넷 주소를 뒤집어 놓은 형태이다. - ArtifactId : ArtifactId는 버전 정보를 생략한 이름(jar) 보통 프로젝트 id와 동일하게 작성한다. |
설정 시 오류 만남
흑.. 기존 maven을 쓰다가 gradle로 초기설정을 다시 하려고하니 역시나 쉽게 설정이 되지 않는다...
오류 | 해결방법 |
[Spring Boot] Plugin [id: 'org.springframework.boot', version: '2.5.6'] was not found 오류 해결하기 |
![]() ![]() |
뭔가 gradle에서 다운로드 불가능한 상황이었고, 여러 해결 방법을 시도했지만 결국 JVM(jdk)를 재 설정 (Download JDK)를 통해 해결 |
라이브러리 살펴보기
라이브러리 살펴보기 (우측 gradle) |
설명 |
![]() |
의존성을 살펴보면 boot 하위에 기본적으로 spring mvc, jpa, tomcat등이 의존 되어 있다. 그래서 boot를 사용하면 모두 사용가능하다. |
![]() |
*중요 : 로그 관련 라이브러리 spring boot 는 기본적으로 log-back을 쓴다. 요즘은 slf4j라는 것을 쓴다. slf4j는 로그를 사용하기 위한 모음이고 구현체가 log-back등이다. |
![]() |
테스트 관련 라이브러리 1. assert : assetTrue등.. 2. mockito : mock 쓸 때.. 3. juniit 등 |
핵심 라이브러리
- 스프링 MVC
- 스프링 ORM
- JPA, 하이버네이트
- 스프링 데이터 JPA ( 스프링 데이터 JPA는 스프링과 JPA를 각각 이해하고 쓰는 응용기술이다.)
기타 라이브러리
- H2 데이터베이스, 클라이언트
- 커넥션 풀, 부트 기본은 HikariCP
- WEB(thymeleaf)
- 로깅 SLF4J & LogBack
- 테스트
View 환경설정
thymeleaf(타임리프) 템플릿 엔진
- JSP를 대체하여 나온 view 라이브러리
- 장점 : Natural templates 마크업을 깨지 않고 그대로 사용, jsp는 안열리는데 thymeleaf는 바로 열린다.
Controller
@Controller
public class HelloController {
/**
* hello라는 요청이 오면 처리하는 메서드
* @param model
* @return resource->template->view(hello.html)
*/
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello"; //retrun "hello.html"
}
}
의문점 : return "hello"만 해주는데 templates의 hello.html을 찾아가나요?
-> 부트가 해준다. resources:templates/ + {ViewName} + .html을 찾아간다.
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>
결과
![](https://blog.kakaocdn.net/dn/pxWcy/btrq6v1bDeK/okr2T2EggPmgAKm6GBuUK1/img.png)
정적 컨텐츠 (static)
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>
꿀팁
- 화면단을 수정헀는데 그때마다 계속 서버를 restart하기 너무 부담이다.
해결
1. bulid.gradle에 dependencies에 spring-boot-devtools를 넣어준다.
implementation 'org.springframework.boot:spring-boot-devtools'
적용이 되면 restartMain이라는 문구를 볼 수 있다.
![](https://blog.kakaocdn.net/dn/bjJBBI/btrq4x6dHZU/Aw9xb3HpwacCY7skSg4cs0/img.png)
수정 후 Build에 Recompile hello.html을 해주면 수정된 부분만 바꿔어서 화면에 뿌려준다.
![](https://blog.kakaocdn.net/dn/sACcL/btrq24jiTd6/DNkS3cgf11N7pWzXe5i8c0/img.png)
H2 데이터베이스 설치
개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 (h2database.com/html/main.html)
H2 설치 및 실행 (https://so-easy-coding.tistory.com/5)
JPA와 DB 설정, 동작확인
'Spring > [인프런] Spring Boot & JPA' 카테고리의 다른 글
[인프런] 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 (0) | 2022.01.17 |
---|