김영한의 스프링부트 - 입문편을 보고 작성된글 입니다.
목차
- 프로젝트 생성
- 라이브러리
- View환경설정
- 빌드 및 실행
Java11 , IntelliJ사용
프로젝트 생성
Spring project를 밑바닥 부터 짜야했지만, 이제는 Spring boot를 이용하여, 프로젝트를 생성해낼 수 있다!
아래와 같이 골라준 후 generate를 한다.
다운받아진 프로젝트를 압축을 푼다.
IntelliJ로 열기
압축을 푼 hellospring 폴더내부의 build.gradle을 IntelliJ에서 Open해준다.
Open as Project
처음 프로젝트를 열 때는 위에서 말했듯 선택한 것을 기반으로 library를 가져와 다운받기 때문에 시간이 조금 오래걸린다.
참고)
build.gradle
plugins {
id 'org.springframework.boot' version '2.5.4'
id 'io.spring.dependency-management' version '1.0.11.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'
}
test {
useJUnitPlatform()
}
의존관계 (dependencies)로, 3가지 라이브러리를 다운 받았지만,
사실 저 라이브러리 들도 각각 의존관계를 가지고 있으며, 그에 필요한 것이 자동으로 받아진다
전체적으로 다운받아진 라이브러리들은 아래 디렉토리 구조 부분에서 "External library"에서 확인해 볼 수 있다.
이들의 의존관계를 알고 싶다면,
Gradle 클릭 > hellospring > Dependencies 아래항목에서 확인할 수 있다.
또한, (*) 는 중복제거라는 의미임
실행시켜보기
Directory 구조 참고!
위에 쓰여 있듯이,
main > java 아래가 실제 java code이다.
HelloSpringApplicationTests에 가서 Start를 해보면,
다음과 같이 8080포트로 실행되었음을 알 수 있다.
Run 하면 실행되는 일
package hello.hellospring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HelloSpringApplication { public static void main(String[] args) { SpringApplication.run(HelloSpringApplication.class, args); } }
main 함수 내의
SpringApplication.run 함수가 실행되면서
HelloSpringApplication 이라는 클래스가 실행된다 (@SpringBootApplication이라는 annotation이 있어야함!)
Tomcat이라는 웹서버를 내장하고 있다. 이 웹서버를 자체적으로 띄우면서 스프링부트가 함께 올라간다.
과거에는 웹서버와 개발라이브러리가 완전히 분리되어 있었고,
WAS를 따로 만들고 자바코드를 밀어넣는식(?) 으로 개발했다면, 지금은 소스코드가 웹서버를 내장(embedded)하고 있다.
localhost:8080에 접속했을 때,
뭔가 에러메세지 창이 뜨면, 성공적으로 실행된 것이다.
Command + F2로 실행되었던 것 종료 가능
gradle을 통해서 실행하면 느려질 수 있기 때문에
Preference > gradle 에 들어가서
Build and run using과 Run tests using을 모두 IntelliJ 로 변경해준다.
이렇게 되면, gradle을 통하지 않고 intelliJ에서 바로 java를 띄우기 때문에 훨씬 빨라진다.
라이브러리 참고
스프링 부트 라이브러리 (김영한님 강의자료 출처)
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: 스프링 통합 테스트 지원
실무에서는 에러를 출력할때 system.printError을 사용하지 않고, log를 이용한다
logging library에 대해서
logback
slf4j
Test
junit v5 (핵심)
테스트를 편리하게 하도록 도와주는 것
mockito
assesrtj
spring-test : 스프링과의 통합 테스트를 돕는 라이브러리
빌드 방법
글을 따로 작성하긴 너무 짧아서 쓰는 빌드방법
1. console창(터미널) 프로젝트 폴더(위에서는 helloSpring)로 이동
2. ./gradlew build(빌드 후 빌드 폴더 생성됨)
3. cd build/libs
4. java -jar (파일명).jar
빌드 후 jar파일만 복사하여 서버에 넣은 후 실행하면, 서버에서도 스프링이 동작함.
안될 때는 clean build해보기!
참고 자료
- 프로젝트 생성
https://www.inflearn.com/course/스프링-입문-스프링부트/lecture/48553?tab=curriculum&speed=1.25
'Backend > Spring' 카테고리의 다른 글
[Spring] 회원관리 예제-1) 도메인과 레포지토리 (0) | 2021.09.07 |
---|---|
[Spring] 웹개발 기초(정적,MVC,API) (0) | 2021.09.01 |
[Spring]정적, 동적 페이지 동작원리 (0) | 2021.08.31 |
[Spring] 스프링부트 활용하기 (0) | 2021.08.31 |
[Mac] M1 Java11설치 (0) | 2021.08.29 |