스프링 부트 시작하기(인텔리J사용)


특징

war파일을 사용하지 않고 내장된 embed tomcat 또는 jetty사용가능

Spring Boot 에서 지원하는 start pom 으로 Meven 또는 gradle 간단하게 사용

Spring의 수많은 설정을 자동으로 설정함 (xml설정 필요 없음),autoconfigure 


인텔리J에서 Spring Boot 프로젝트 생성하기

기술적인 관점에서 보면 스프링 MVC로 웹요청 처리, 뷰 템플릿으로 뷰정의, 스프링데이터 jpa로 데이터데이스에 독서 목록을 영속화,

데이터베이스는 일단 내장된  H2 사용하는 자바애플리케이션 코드작성하는 프로젝트 생성해보자.


인텔리J- new project 



인텔리J 에서 Spring Initializr 프로젝트 생성후

아래와 같이 type 에 메이븐 또는 그레이들 프로젝트를 선택한다.(양이는 그레이들 선택)



NEXT후 

Web, Thymeleaf, JPA, H2를 체크 하여 프로젝트 생성하면 완료!

갓 생성된 스프링부트 프로젝트 살펴보면

src/main/java 애플리케이션 코드 작성

src/main/resources 리소스 작성

src/test/resources 테스트 소스

(기존에 사용했던 Spring+gradle 과 같은 구조)


주요파일

build.gradle - 빌드 명세

gradlew - 그레이들 레퍼

DemoApplication.java - 애플리케이션의 부트스트랩 클래스이자 주 스프링 구성 클래스

application.properties - 애플리케이션과 스프링  부트 프로퍼티를 구성하는 데 사용하는 파일


DemoApplication.java 클래스

스프링의 구성 클래스이다.

스프링의 구성을 제거했지만 자동 구성을 활성화하는 최소한의 구성은 해야한다.

아래 코드보면 구성 코드는 단 한줄이다.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}


@SpringBootApplication 은 스프링 컴포넌트 검색, 스프링부트 자동 구성을 활성화한다. 

@SpringBootApplication 은 @Configuration(스프링의자바기반구성클래스 의미), @ComponentScan(검포넌트 검색 기능 활성화,클래스 자동 검색),@EnableAutoConfiguration(자동설정 활성화) 가 포함되어 있는 어노테이션이다. 

이전에는 이세개의 어노테이션을 붙여야 했지만 스프링부트 버젼이 올라가면서   @SpringBootApplication 하나면 충분하다.


main()메소드에서 해당 클래스 참조 하여 StringApplicaion.run 메소드 전달하여 애플리케이션을 실행할 수 있게 한다.

아직 애플리케이션을 하나도 작성하지 않았지만 애플리케이션을 빌드하고 실행 가능.


빌드(인텔리J커멘트창 이용) 

$ gradle bootRun 

(스프링부트 그레이들 플러그인 포함)

  

gradle build

$ java -jar build/libs/readinglist-0.0.1-SNAPSHOT.jar 

(그레이드 빌드후 자바명령으로 실행가능)


명령 실행후 애플리케이션 정상적으로 작동 (localhost:8080 으로 확인하면 404 NotFoundError 페이지 나타나게됨)

양이는 톰캣 로컬 지정하고 셋팅하여 진행하였음.



application.properties 

초기 셋팅시 파일은 완전히 비어있음.

이파일은 선택적이므로 미사용시 파일 삭제해도 무관하다.

잠깐 프로퍼티를 살짝 건드려보자.

server.port=8000

추가하면 내장 톰캣서버가 기본 포트 8080 포트로 수신 대기하게 된다.

다시 실행하면 8000으로 변경된걸 확인할수 있다.

(중요중요)application.properties를 로드하라고 스프링부트에 명시적으로 요청한 적이 없다는 점!!

application.properties가 존재하면 스프링부트가 자동으로 이 파일을 로드하고 그 안에 프로퍼티를 스프링과 애플리케이션 코드를 구성하는 사용할 수 있게 한다.



스프링부트 프로젝트 빌드 파일(build.gradle)

buildscript {
ext {
springBootVersion = '1.5.3.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {//스프링부트 의존성
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot' //스프링부트 플러그인 적용

version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.7

repositories {
mavenCentral()
}


dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa') //스타터 의존성
compile('org.springframework.boot:spring-boot-starter-freemarker')
compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-web')
runtime('com.h2database:h2')
testCompile('org.springframework.boot:spring-boot-starter-test')
}

빌드파일을 살펴보면 스프링 애플리케이션과 크게 다르지 않다는걸 알 수있다.

다만 스프링부트로 개발할 때는 빌드에 푸가로 도움을 주는 세부적인 옵션을 사용한다.


여기까지 스프링부트 갓 생성한 초기 프로젝트에 대해 알아보았다.

'FRAMEWORK > Spring Boot' 카테고리의 다른 글

spring , spring boot 차이  (0) 2019.05.20
Posted by 양승아
: