생성하기
- build.gradle 작성
- ./gradlew clean
- ./gradlew build
- @SpringBootApplication이 선언된 Application Class 작성
- Run
build.gradle 이해
- buildscript block
- 빌드 자체를 위한 ext / repositories / dependencies 추가
- ext : 전역변수 설정
- repositories : buildscript 내의 의존성을 어떤 원격 저장소에서 다운로드 받을지 설정
- dependencies : 빌드를 위한 의존성을 추가. spring-boot-gradle-plugin을 스프링부트 버전에 맞춰 설정
- plugins
- 프로젝트에 포함될 플러그인 설정
- dependencies에 비해 좀 더 폭넓게 쓰이고 core한 외부패키지라고 생각하면 된다.
- group / version / sourceCompatibility
- 컴파일 시 지정될 그룹, 버전, 소스호환성 설정
- repositories
- 프로젝트에 추가될 의존성을 다운로드할 원격 저장소 설정
- mavenCentral은 전통적인 저장소이나, 사용자 라이브러리를 업로드하는 것이 어려움
- jcenter는 라이브러리 업로드가 간단하다. mavenCentral에도 업로드되도록 자동화.
- dependencies
- 프로젝트에 추가될 의존성 설정
- implementation / testImplementation으로 적용될 환경을 지정할 수 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | plugins { id 'org.springframework.boot' version '2.2.5.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group 'kkambi.toy' version '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { jcenter() } dependencies { implementation "org.springframework.boot:spring-boot-starter-web" testImplementation "org.springframework.boot:spring-boot-starter-test" } | cs |
빌드 = 자바 프로젝트 생성
- 빌드한 프로젝트는 웹 프로젝트가 아님
- gradle 기반의 일반적인 자바 프로젝트 (jar 파일 생성)
- 그런데도 웹 어플리케이션이 실행된다
스프링부트의 장점
- SpringBoot dependency만 추가했는데 Tomcat / slf4j 등 수많은 의존성이 자동으로 추가된다.
- Servlet, Bean 설정 등과 같은 Spring Web MVC 설정을 하지 않아도 된다.
- @SpringBootApplicaiton 내부의 @EnableAutoConfiguration과 밀접한 장점!
Spring Initializer (https://start.spring.io)
- 웹에서 손쉽게 초기 프로젝트 생성 가능
- 의존성을 태그로 쉽게 추천
스프링 부트 프로젝트 구조
- 일반적인 자바 프로젝트랑 동일
- src/main/java/
- 자바 소스
- src/main/resources/
- 자바 리소스
- resources 디렉토리는 classpath가 된다
- classpath prefix로 하위 패키지를 쉽게 참조할 수 있다.
- ex. @PropertySource("classpath:/application.properties")
- src/test/java/
- 테스트 코드
- src/test/resources/
- 테스트 리소스
스프링 부트 메인 어플리케이션의 위치
- @SpringBootApplication class가 위치하는 곳 = 메인 어플리케이션의 위치
- 이것이 위치한 패키지부터, 하위 모든 패키지까지 컴포넌트 스캔
- src/java/ 에 위치한다면 모든 패키지 스캔 (해당 프로젝트와 상관없는 패키지도)
- 따라서 src/java/ 에 default package를 생성 -> 그 안에 메인 어플리케이션 위치
'학습 > Spring' 카테고리의 다른 글
[spring] 스프링부트의 Bean 등록 2단계 (0) | 2020.03.28 |
---|---|
[spring] 스프링부트 프로젝트 초기 세팅 시 빌드 툴의 이해 (maven, gradle) (0) | 2020.03.25 |
[spring] 핵심3_Portable Service Abstraction (0) | 2020.03.22 |
[spring] 핵심2_Aspect Oriented Programming (0) | 2020.03.21 |
[spring] 핵심1_Inversion Of Control / Bean / Dependency Injection (0) | 2020.03.21 |
댓글