📺 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 김영한
갑자기 스프링을 공부하는 이유
스프링을 공부하게 됐다 !₩! 프론트엔드 공부를 하면서 백엔드 개발자와 다양한 협업을 진행했고, 백엔드 지식이 전혀 없어 미안하고 답답한 경우가 많았다. 역시 프론트엔드 개발자가 되고 싶다고 프론트엔드만 공부하는 편협하고 우물 안의 개구리 같은 생각은 버려야겠다. 고 생각하고 백엔드 공부를 해보기로 마음 먹었다. 처음엔 장고로 시작해보려고 했다. 하지만 주변에 스프링을 공부하는 사람이 많았고 물어볼 사람들이 많은 프레임워크가 스프링이었다. 그리고 이번 기회에 아주 잘하는 선배님과 공부할 수 있는 기회가 생겼다. 그래서 국룰이라고들 하는 인프런 김영한 선생님 강의 입문편 부터 보기 시작할 것이다
간단한 웹 애플리케이션 개발의 순서
1. 스프링 프로젝트 생성
2. 스프링 부트로 웹 서버 실행
3. 회원 도메인 개발
4. 웹 MVC 개발
5. DB 연동 - JDBC, JPA, 스프링 데이터 JPA
6. 테스트 케이스 작성
실무에서 어떻게 사용하는지에 대해 초점을 맞춘다.
프로젝트 환경 설정
- Java 17 이상 설치 ✔️
- SDK, JDK 란?
- Software Development Kit (소프트웨어 개발 도구), Java Development Kit (자바 개발 도구)
- SDK 는 프로그래밍 언어 제작사가 제공하는 일련의 툴이다. 응용 프로그램을 만들기 위해서는 특정한 SDK 를 다운 받아야 하는데 예를 들면 Java 개발을 위해서는 Java 를 포함한 SDK 를 다운 받아야 한다.
- IDE 설치 : IntelliJ ✔️
스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성.
Project : Gradle - Groovy Project
- gradle 은 버전 설정하고 라이브러리 땡겨오는 일 함
Spring Boot : 3.x.x
- Java 17 이상 사용, javax 패키지 이름을 jakarta 로 변경, H2 데이터 베이스는 2.1.214 버전 이상 사용
- (snapshot 는 정식 release 가 아님)
Language : Java
Packaging : Jar
Java : 17 또는 21
Project Metadata -> groupId : hello , artifactId : hello-spring
Dependencies : Spring Web, Thymeleaf
- thymeleaf : html 을 만들어주는 템플릿 엔진
폴더 구조
자바 파일을 제외한 나머지난 다 resources (html 등)
build.gradle
자바는 메인 메소드 로부터 모든 프로젝트가 시작한다.
🚨 이때 만들어진 스프링 부트 프로젝트를 idle 로 열 때 꼭 build.gradle 파일을 눌러서 open as project 하자. 이때 build 된당 안 그러면 실행을 할 수가 없다... (내가 그랬음)
이걸 보면~ 8080 으로 들어가라는 소리겠지? 하고 들어갔는데 근데 에러 남 정신 나가는 줄 알았음...
그치만 이게 맞다고 함 아무 것도 내용 없어서 띄워주는 것도 없는 거임 여기 까지 하면 프로젝트 환경 설정 완료다.
메인 메소드를 실행하면 SpringApplication.run 이 실행되고 HelloSpringApplication.class 를 넣어주면 톰캣이라는 웹서버를 자체적으로 띄우면서 스프링 부트가 실행된다.
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
- gradle 을 통하지 않고 바로 인텔리제이에서 build 해주는 방법은 setting -> gradle -> build and run using, run tests using 을 gradle 에서 IntelliJ Idea 로 바꾸어준다.
라이브러리 살펴보기
땡긴 적 없는 라이브러리들은 뭐지...? gradle 같은 빌드 툴에서 의존 관계(dependencies) 를 다 정리해줌 나는 얘한테 의존이 필요하고 쟤는 쟤한테 의존이 필요하고... 나중에 스프링 코어 까지 땡겨옴 요즘에는 소스 라이브러리에서 웹서버를 내장하고 있다. 옛날에 객지프 배울 때 톰캣 서버 깔기 엄청 ㅎ힘들었는데... 이게 그거군아
로그를 설명해드릴게요~ 나중에도 확인할 수 있게 로그를 따로 남겨야 함 그냥 냅다 출력해서 확인하지 않음... 실무에서는 로깅을 사용해야 한다.
스프링 부트 라이브러리
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, slf4j
테스트 라이브러리 : spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
thymeleaf 템플릿 엔진 을 사용
- th 로 선언
- Thymeleaf의 주요 목표는 개발 워크플로에 자연스러운 템플릿을 제공하는 것이다. 즉, 브라우저에서 올바르게 표시될 수 있고 정적 프로토타입으로도 작동하는 HTML을 제공하여 개발 팀에서 더욱 긴밀한 협업을 가능하게 하는 것입니다.
- 타임리프는 흔히 View Template(뷰 템플릿)이라고 부른다.
- 뷰 템플릿은 controller 가 전달하는 data 를 이용하여 동적 으로 화면을 구성할 수 있게 해준다.
웹 애플리케이션에서 첫 번째 진입점이 바로 컨트롤러이다.
'봄봄 Spring 이 왔어요' 카테고리의 다른 글
[Spring] 클라이언트로 정보 전달하기 (0) | 2024.08.04 |
---|---|
스프링 생초보! 이미지 업로드 게시판 구현을 위한 빌드업 (2) | 2024.07.21 |