목차로 돌아가기

프로젝트 생성

스프링 부트란?

- 스프링 프레임워크를 사용하는 프로젝트를 아주 간편하게 설정할 수 있는 스프링 프레임워크의 서브 프로젝트라고 할 수 있다.

- 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>

결과

정적 컨텐츠 (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이라는 문구를 볼 수 있다.

수정 후 Build에 Recompile hello.html을 해주면 수정된 부분만 바꿔어서 화면에 뿌려준다.


H2 데이터베이스 설치

개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공 (h2database.com/html/main.html)

H2 설치 및 실행 (https://so-easy-coding.tistory.com/5)

JPA와 DB 설정, 동작확인

 

+ Recent posts