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 패키지 포함 하위에 등록된 컴포넌트는 자동으로 스캔된다.