[스프링 입문] 1. 프로젝트 환경설정
2024. 1. 20. 04:37
728x90
SMALL
📌 프로젝트 생성 방법
➡ 스프링 부트 스타터 사이트를 통해서 프로젝트 설정
Project : Gradle - Groovy
Language : Java
Spring Boot : 3.x.x
➡ 버전 옆에 SNAPSHOT OR M2 등이 써있는 것은 정식 버전이 아니다
➡ 버전이 3 이상이면 Java 17 이상 사용 추천,
➡ javax 패키지 이름을 jakarta로 변경,
➡ H2 데이터베이스를 2.1.214 버전 이상 사용
group : 기업명 작성 (임시로 hello)
artifact : 프로젝트명 (임시로 hello-spring)
Name/Description/Package name : 유지
Dependencies : 사용할 라이브러리
➡ Spring Web (웹프로젝트), Thymeleaf(HTML 템플릿엔진) 사용
Packaging : Jar
➡ GENERATE
다운로드 받은 파일(hello-spring)을 압축 풀고 IntelliJ에서 해당 파일에 있는 build.gradle을 Open한다.
✔ Maven VS Gradle
- Maven
- 외부 저장소에서 필요한 라이브러리와 플러그인들을 다운로드 하고, 로컬 시스템에 모두 저장한다
- 고정적이고 선형적인 단계의 모델을 기반으로 함
- Gradle
- JVM 기반으로 실행되는 스크립트 언어, Task 기반으로 작업을 수행한다. Java와 호환되며, Java 문법과도 유사하다.
- 작업 의존성 그래프를 기반으로 한다.
- 스크립트 길이와 가독성 면에서 우세하다!
📌 라이브러리 살펴보기
gradle : 의존 관계가 있는 모든 라이브러리를 다운로드한다
1. 스프링 부트 라이브러리
- 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
2. 테스트 라이브러리
- spring-boot-starter-test
- junit : 테스트 프레임워크
- mockito : 목 라이브러리
- assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test : 스프링 통합 테스트 지원
반응형
📌 View 환경설정
1. Welcome Page : domain을 쳤을 때 보이는 첫 화면
🔶 src/main/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>
✔ 정적 페이지 (static)
- 템플릿 엔진을 이용해 형태 변경 가능
- imdex.html을 찾고, index template을 찾아서 자동으로 Welcome page로 사용한다.
📌 Controller
- 스프링 프레임워크에서 웹 애플리케이션의 요청을 처리하는 역할을 담당하는 클래스이다.
- 사용자의 요청을 받아 해당 요청을 처리하고, 결과를 생성하여 응답을 반환한다.
- 주로 웹 애플리케이션에서 클라이언트와의 상호작용을 담당한다.
✔ @Controller
: 스프링에서 컨트롤러를 정의하기 위해서는 해당 클래스에 이 애노테이션을 적용해야 한다.
✔ @RequestMapping
: 특정 URL 패턴과 해당 요청을 처리하는 메서드를 연결한다.
HelloController
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
@Controller
public class HelloController {
@GetMapping("hello") //url로 localhost:8080/hello이 검색될 경우 메소드 호출
public String hello(Model model){ //model 생성
model.addAttribute("data", "hello!!"); //key 값은 data, value 값은 hello!!
return "hello";//resources/templates 아래에 존재하는 hello.html 실행
}
}
hello.html
🔶 resources/templates/hello.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org"> //thymeleaf 템플릿 엔진 선언
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p> //${data}이 앞에 HelloController에서 value 부분으로 치환
</body>
</html>
📌 thymeleaf 템플릿엔진 동작 확인
- 웹 브라우저에
localhost:8080/hello
검색 - 내장 톰캣 서버에서 해당 주소를 받아서 HelloController 실행
@GetMapping("hello")
-> localhost:8080/hello와 매칭되면 메소드가 실행된다.model.addAttribute("data", "hello!!");
(key = data, value = hello!!)return "hello";
->resources/templates
아래에 존재하는hello.html
실행된다- controller에서 return 값으로 문자를 반환하면
viewResolver
가 해당 화면을 찾아서 처리한다. - 스프링 부트 템플릿엔진 기본 viewName(return 값)과 매핑
resources/templates/+{ViewName}+.html
- controller에서 return 값으로 문자를 반환하면
spring-boot-devtools
라이브러리를 추가하면 html 파일을 수정하더라도 컴파일만 해주면 서버를 재시작할 필요 없다.
컴파일 방법 : build -> Recompile
이 글은 <김영한_스프링 입문>을 수강하고 참고하여 작성한 글입니다
NEXT
Reference
728x90
LIST
'인프런 Spring 강의 정리 > 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 카테고리의 다른 글
[스프링 입문] 6. 스프링 DB 접근 기술 (0) | 2024.01.20 |
---|---|
[스프링 입문] 5. 회원 관리 예제 - 웹MVC 개발 (0) | 2024.01.20 |
[스프링 입문] 4. 스프링 빈과 의존관계 (0) | 2024.01.20 |
[스프링 입문] 3. 회원 관리 예제 - 백엔드 개발 (0) | 2024.01.20 |
[스프링 입문] 2. 스프링 웹개발 기초 (0) | 2024.01.20 |