본 포스팅은 인프런 - 스프링 입문을 강의를 바탕으로 공부하고 정리한 글입니다.
스프링 프로젝트 생성 및 실행
스프링 부트 기반 프로젝트 생성
- 스프링 부트 스타터 사이트를 사용해 스프링 부트 기반 프로젝트를 간편하게 생성할 수 있다.
- Project : 빌트 관리 툴 선택 (Gradle을 많이 사용)
- Language : 언어 설정
- Spring Boot : 스프링 부트 버전 설정
- 정식버전 중 가장 최신버전을 선택하면 된다.
- SNAPSHOT : 미정식 버전
- Project Metadata
- Group : 보통 기업의 도메인명
- Artifact : 빌드 결과물 이름
- Name : 이름
- Description : 프로젝트 설명
- Package name : 패키지 이름
- Packaging : 배포 형태 선택
- Java : 자바 버전 선택
- Dependencies : 라이브러리 주입
- 이 단계에서 추가하지 않고 프로젝트 생성 이후 설정 파일에서 직접 등록해줄 수도 있다.
- ex) Spring Web(웹 프로젝트를 만드는 라이브러리), Thymeleaf(HTML을 만들어주는 템플릿엔진)
✅ 생성 예시
Maven / Gradle 이란?
필요한 라이브러리를 받아오고, 빌드하는 Lifecycle까지 관리해주는 툴이다.
프로젝트 실행
- 인텔리제이를 통해 다운로드 받은 파일 중 build.gradle 파일을 열어 프로젝트를 실행한다.
📁 build.gradle
plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
✅ 동작 확인
- 기본 메인 클래스 실행
- 스프링 부트 메인 실행 후 에러 페이지(http://localhost:8080)로 간단하게 동작 확인
IntelliJ 환경 설정
Gradle 대신 자바로 실행하기
최근 IntelliJ 버전은 Gradle을 통해 실행하는 것이 기본 설정인데, 이렇게 하면 실행속도가 느리다.
다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다.
- File → Setting → Build, Execution, Deployment → Build Tools → Gradle
- Build and run using : Gradle → IntelliJ IDEA
- Run tests using : Gradle → IntelliJ IDEA
JDK 설치 확인하기
✅ 프로젝트 JDK 설정
- Windows : File → Project Structure (Ctrl+Alt+Shift+S)
- MAC : File → Project Structure (⌘;)
- JDK를 설치한 자바 11로 지정해준다.
✅ gradle JDK 설정
- Windows : File → Settings(Ctrl+Alt+S)
- MAC : IntelliJ IDEA | Preferences(⌘,)
- Gradel JVM을 자바 11로 지정해준다.
View 환경설정
Welcome Page 만들기
📁 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>
스프링 부트는 Welcom Page 기능을 제공한다.
resources/static 패키지에 index.html 파일이 있으면 스프링은 이를 자동으로 웰컴 페이지로 사용한다.
- Welcom Page란 도메인만으로 접속했을 때 첫 화면을 말한다.
- static/index.html 파일이 Welcom Page로 사용된다.
- https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page
thymeleaf 템플릿 엔진 사용하기
- thymeleaf 공식 사이트 : https://www.thymeleaf.org/
- 스프링 공식 튜토리얼 : https://spring.io/guides/gs/serving-web-content/
- 스프링 부트 메뉴얼 : http://: https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/ html/spring-boot-features.html#boot-features-spring-mvc-template-engines
📁 controller/HelloController
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
- 웹 애플리케이션에서 컨트롤러가 첫번째 진입점이다.
- 컨트롤러에는 @Controller 어노테이션을 달아줘야 한다.
- @GetMapping("hello")
- 웹 어플리케이션에서 /hello라고 들어오면 스프링이 해당 메소드를 호출해준다.
- model.addAttribute(key, value)
- Modle에 데이터를 넣어주는 메소드로, key값에 value를 저장한다.
📁 resources/tamplates/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>
- ${data} : 컨트롤러에서 Model에 저장한 data라는 key에 맞는 value인 hello!!를 가져온다.
✅ thymeleaf 템플릿엔진 동작 확인
동작 환경
컨트롤러에서 return 값으로 문자를 반환하면 뷰 리졸버(viewResolver)가 화면을 찾아서 처리한다.
- 스프링 부트 템플릿엔진 기본 ViewName 매핑 방법
- resources : templates/ + {ViewName} + .html
- 즉, hello.html을 찾아서 띄워준다.
spring-boot-devtools 라이브러리를 추가할 경우, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.
빌드하고 실행하기
콘솔로 이동 (이때 오류 생길 수 있으니 반드시 인텔리제이에서 실행 중인 서버 끄기)
- Window 사용자
- gradlew (gradlew.bat 실행)
- gradlew build
- cd build/libs
- dir (폴더 목록 확인)
- java -jar hello-spring-0.0.1-SNAPSHOT.jar
- Mac 사용자
- ./gradlew build
- cd build/libs
- ls -arlth (폴더 목록 확인)
- java -jar hello-spring-0.0.1-SNAPSHOT.jar
이때 잘 되지 않는다면 ?
• ./gradlew clean build (build 폴더 삭제후 재설치 진행)
'🌱 Spring > Core' 카테고리의 다른 글
[기본] #2 회원, 주문, 할인 도메인 개발 및 테스트 (0) | 2022.02.21 |
---|---|
[기본] #1 객체 지향 설계와 스프링 (0) | 2022.02.18 |
[입문] #7 AOP (0) | 2022.02.17 |
[입문] #6 DB 접근기술(JDBC, JdbcTemplate, JPA, SpringJPA) (0) | 2022.02.16 |
[입문] #5 웹 MVC 개발 (0) | 2022.02.15 |
[입문] #4 스프링 빈과 의존관계 (0) | 2022.02.15 |
[입문] #3 회원관리 예제 만들기 (0) | 2022.02.15 |
[입문] #2 정적웹, MVC, API (0) | 2022.02.14 |