본문 바로가기

Spring & SpringBoot

[SpringBoot] SpringBoot에 대해 & SpringBoot 프로젝트 생성 및 실행

SpringBoot

1️⃣ SpringBoot의 특징

▪️ project에 따라 자주 사용되는 libarary들이 미리 조합되어 있음

▪️ 복잡한 설정을 자동으로 처리

▪️ 내장 서버를 포함해서 tomcat과 같은 WAS를 추가로 설치하지 않아도 개발 가능

▪️ WAS에 배포하지 않고도 실행할 수 있는 JAR파일로 Web Application을 개발 가능

 

2️⃣ SpringBoot 프로젝트 생성

< 프로젝트 생성 방법 2가지 >

1) spring initializr 사이트를 통해 생성

2) sts에서 [New] - [spring starter project]를 통해 생성

프로젝트 생성

▪️ Spring Boot Version
- SNAPSHOT이 붙으면 현재 개발중인 버전이고, 아무것도 붙어있지 않은 것이 정식 릴리즈된 버전이다. 

 

< 프로젝트 주요 구성 폴더/파일 >

프로젝트 구조

프로젝트 주요 파일 설명
src/main/java java 소스 디렉토리
HelloSpringBootApplication.java application을 시작할 수 있는 main method가 존재하는 스프링 구성 메인 클래스
static html, css, js, img 등의 정적 resource directory
templates SpringBoot에서 사용가능한 여러가지 View Template(Thymeleaf, Velocity, FreeMarker 등) 위치
- 요즘은 잘 사용하지 X (React 등으로 대체)
application.properties application 및 스프링의 설정등에서 사용할 여러가지 property를 정의한 파일
src/main jsp 등의 리소스 디렉토리

 

< 프로젝트 실행 >

@SpringBootApplication이 있는 클래스를 '시작 클래스', '메인 클래스', '부트스트랩 클래스'라고 한다. 해당 클래스를 실행시키면 서버(tomcat)가 실행된다.

@SpringBootApplication이 가지는 어노테이션들 중 주요 어노테이션은 아래와 같다.

@SpringBootConfiguration - 클래스가 xml을 대신해서 설정정보를  가지고 있음을 의미

@EnableAutoConfiguration - 자동설정 기능을 활성화

                                                - 사용자가 필요할 것 같은 객체를 생성해서 주입함

@ComponentScan - 지정한 패키지를 스캔해서 필요한 객체를 생성 (= <context:component-scan>)

                                 - 시작 클래스가 속한 패키지부터 하위 패키지 안의 모든 패키지를 스캔

SpringBoot에서 Bean이 등록되는 방식은 @ComponentScan과 @EnableAutoConfiguration 두가지이다.

프로젝트 실행화면

 

< 스프링부트 컴포넌트 스캔 >

이전 xml config 방식에서 <component-scan>을 사용하는 것과 다르게, 스프링 부트에서는 컴포넌트 스캔을 별도로 지정하지 않아도 @SpringBootApplication 어노테이션을 통해 알아서 잘 동작한다. @SpringBootApplication이 정의된 패키지가 base package가 된다. 별도의 컴포넌트 스캔을 하고 싶은 경우 @ComponentScan(basePackages={~})을 사용하면 된다.

com.ssafy.hello 패키지 아래에 HelloSpringBootApplication.java파일내에 @SpringBootApplication이 선언되어 있다면, com.ssafy.hello 패키지 포함 하위에 등록된 컴포넌트는 자동으로 스캔된다.