강의 진행 순서
- 스프링 프로젝트 생성
- 스프링 부트로 웹 서버 실행
- 회원 도메인 개발
- 웹 MVC 개발
- DB 연동 - JDBC, JPA, 스프링 데이터 JPA
- 테스트 케이스 작성
프로젝트 생성
start.spring.io 에서 스프링부트 기반의 스프링 프로젝트를 만들 수 있다.
Maven vs. Gradle
필요한 라이브러리를 땡겨오고, 빌드 라이프 사이클까지 관리해주는 툴이다. 과거에는 Maven을 더 많이 썼지만 요즘에는 Gradle을 많이 쓰는 추세이다.
Spring Boot version
(SNAPSHOT)은 아직 만들고 있는 버전이라는 의미이며, M1 등은 정식 릴리즈된 버전이 아니다. 정식 버전을 선택하자.
Library
- Spring Web : 웹 프로젝트를 만드려면 필요하다.
- Thymeleaf : html을 만들어주는 템플릿 엔진
설정을 마친 뒤 Generate 버튼을 클릭하면 zip 파일이 생성된다. 인텔리제이나 이클립스등의 IDE에서 build.gradle 파일을 선택하고 프로젝트를 열어준다. (처음 프로젝트 열 때 외부 라이브러리를 다운받기 때문에 시간이 오래 걸린다.)
기본 소스 구조
- src
- main
- java : 실제 패키지와 소스 파일
- resources : 자바 코드 파일을 제외한 모든 파일 (xml, properties 등 설정파일, html 등)
- test : 테스트 관련 소스
- main
build.gradle 파일
- 스프링 부트, 자바 등이 플러그인으로 들어간다.
- sourceCompatibility = "17" : 자바 17버전을 의미
- Dependencies에 선택했던 라이브러리가 들어가고, 테스트 라이브러리가 자동으로 들어간다 (JUnit 5가 기본)
- repositories { maveinCentral() } : 라이브러리를 다운받을 때 어디에서 다운받을지 결정한다. Maven Central이라는 공개된 사이트가 기본으로 설정된다.
Library 살펴보기
빌드 툴은 라이브러리 의존 관계를 관리해준다.
Gradle이나 Maven같은 빌드 툴은 의존 관계를 관리해준다. 우리는 spring-starter-web만 라이브러리로 추가했는데, 이 starter web이 필요한 라이브러리인 톰캣, spring web, spring mvc, spring core 까지 같이 불러온다. 의존 관계에 의해 불러진 라이브러리도 또 다른 라이브러리를 필요로한다면 그 라이브러리까지 모두 불러오게 된다. 사용하는 IDE에 따라 라이브러리 의존 관계를 확인할 수 있다. (IntelliJ의 경우 Gradle 탭을 클릭하면 된다.)
로그 라이브러리
실무에서는 System.out.println() 사용을 지양해야 한다. 로그로 파일을 관리해야 로그 레벨에 따라 찾아볼 수 있기 때문이다. 요즘은 slf4j, logback을 많이 사용하는 추세이며, 거의 표준에 가깝다. (slf4j는 인터페이스이며, 로그 백은 실제 로그를 출력하는 구현체이다.) spring boot starter를 땡기면 로깅으로는 이 두 라이브러리를 자동으로 불러온다.
주요 라이브러리
Spring Boot Library
- spring-boot-starter-web
- spring-boot-starter-tomcat
- spring-webmvc : 스프링 웹 MVC
- spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slfj4
- spring-boot
Test Library
- spring-boot-starter-test
- jUnit : 테스트 프레임워크
- mockito : 목 라이브러리
- assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test : 스프링 통합 테스트 지원
View 환경설정
welcome page
src/resources/static/index.html 해당 경로에 동일한 이름의 파일을 만들면, 스프링 부트는 이 페이지를 welcome page로 설정한다. 도메인만 작성하여 들어왔을 때 첫 화면에 해당한다. (이런 매뉴얼은 spring.io 페이지에 접속하여 Project > Spring Boot > Learn > version 선택 > reference documentation 에서 확인할 수 있다.)
동작 순서
- 웹브라우저에서 요청을 날리면 spring boot의 내장 톰캣 서버가 주소를 분석하여 설정된 컨트롤러로 찾아간다. /hello 로 요청이 들어올 때 어떤 컨트롤러를 사용할지는 @GetMapping 어노테이션으로 설정해두었다.
- 컨트롤러에서는 model에 데이터를 담고, 뷰 이름을 리턴한다.
- 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아 처리한다.
- 스프링 부트 템플릿 엔진 기본 viewName 매핑 : resource:templates/ {viewName} .html
- 타임리프 템플릿 엔진이 hello.html을 처리하고, 웹브라우저에 반환한다.
이 포스팅은 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 수강하며 작성되었습니다.
[지금 무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 - 인프런
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세
www.inflearn.com
'Spring Framework' 카테고리의 다른 글
[스프링 입문] 회원 관리 백엔드 개발 (0) | 2024.01.21 |
---|---|
[스프링 입문] 스프링 웹 개발 기초 (0) | 2024.01.19 |
[예제로 배우는 스프링 입문] 스프링 PSA (0) | 2023.12.17 |
[예제로 배우는 스프링 입문] 스프링 AOP (0) | 2023.12.16 |
[예제로 배우는 스프링 입문] 스프링 IoC (0) | 2023.12.12 |