프로젝트 생성
Spring boot 생성
- start.spring.io 접속
- Project
- Gradle로 만드는 추세. 이왕이면 Gradle로 진행
- Language
- Java
- Spring Boot
- 정식 릴리즈 중 가장 높은 버전으로 진행
- Project Metadata
- Dependencies
Project Directory Tree
- src
- main
- java
- resources : 설정파일 등 java 파일을 제외한 파일들
- test : 테스트 코드와 관련된 소스를 포함함.
- build.gradle - spring boot가 나오면서 설정파일 등 대부분을 제공해줌.
- plugins - spring 선택 사항
- sourceCompatibility - Java 버전
- repositories - 라이브러리를 vaenCentral() 에서 받아오도록 설정
- dependencies - 선택한 Dependency 목록
- TestImplementation으로 JUnit5가 자동으로 들어감.
- .gitignore - 필요한 소스코드를 설정할 수 있도록
- gradlew, gradlew.bat : gradle build
Project 실행
-
HelloSpringApplication으로 실행
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
- Spring boot 내에 Tomcat 웹서버를 포함하고 있음. 해당 웹서버를 자체적으로 실행하면서 Spring boot를 실행하게 됨.
-
Gradle로 빌드하는 경우
Setting → “gradle” 검색 → Build > Build Tools > Gradle 에서
Build and run using
, Run tests using
모두 intelliJ IDEA로 수정
라이브러리 살펴보기
Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다.
Gradle이나 Maven같은 빌드 툴들은 의존관계를 모두 관리해줌.
주요 Dependency
Spring Boot Library
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버) - 임베디드 웹 서버
- Spring boot 내에 웹서버가 있기 때문에 따로 웹서버를 다운받아서 배포할 필요 없음
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-boot-starter-logging
- logback - 로그 출력
- slf4j - 인터페이스
Test Library
- spring-boot-starter-test : 테스트 관련 라이브러리
- junit-jupiter:5.x : 최근에는 junit5버전 사용
- Mokito: 목 라이브러리
- assertj : 테스트코드를 좀 더 편리하게 작성할 수 있도록 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
스프링부트와 관련한 내용을 포함하여 필요한 라이브러리와 그에 필요한 Dependency를 가져오게 됨.
View 환경설정
Welcome Page 만들기
src > main > resources > static 에 html 파일 저장
Spring boot 에서 Welcome page를 제공하며, index.html 파일을 찾아 띄우게 됨.
Thymeleaf 템플릿 엔진
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "Hello!");
return "hello";
}
- localhost:8080/hello 요청이 올 때
- model에 data: Hello!로 저장하고
- templates/hello.html을 열어줌.
- hello.html에서는 model 안의 data: Hello!를 찾고 출력하게 됨.
빌드하고 실행하기
빌드하기
콘솔에서,
- ./gradlew build
- cd build/libs
- java -jar hello-spring-0.0.1-SNAPSHOT.jar
- 실행 확인