목차로 돌아가기

프로젝트 생성

스프링 부트란?

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

- 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 설정, 동작확인

 

실전! 스프링 부트와 JPA 활용1 - 웹 어플리케이션 개발 
실전! 스프링 부트와 JPA 활용2 - API 개발 및 성능 개선
  강좌명 기한 완료여부
강좌소개
1강 프로젝트 생성 ~1/17 O
2강 라이브러리 살펴보기 ~1/18 O
3강 View 환경 설정 ~1/18 O
4강 H2 데이터 베이스 설치 ~1/18 O
5강 JPA와 DB 설정, 동적확인 ~1/19  
도메인 분석 설계
6강 요구사항 분석 ~1/19  
7강 도메인 모델과 테이블 설계 ~1/19  
8강 엔티티 클래스 개발1    
9강 엔티티 클래스 개발2    
10강 엔티티 설계시 주의점    
애플리케이션 구현 준비
11강 구현 요구사항    
12강 애플리케이션 아키텍처    
회원 도메인 개발
13강 회원 리포지토리 개발    
14강 회원 서비스 개발    
15강 회원 기능 테스트    
주문 도메인 개발
16강 주문, 주문상품 엔티티개발    
17강 주문 리포지토리 개발    
18강 주문 서비스 개발    
19강 주문 기능 테스트    
20강 주문 검색 기능 개발    
웹 계층 개발
...      
       

 

'Spring > [인프런] Spring Boot & JPA' 카테고리의 다른 글

SpringBoot & JPA 프로젝트 생성  (0) 2022.01.18

+ Recent posts