개발/Spring

[Spring] 스프링 부트 (Spring Boot) 특징 및 구조

zz132456zz 2022. 5. 18. 22:47
728x90

Spring Boot의 특징 및 구조와 사용 파일에 대해서 알아보자.


Spring의 경우 Application을 개발하려면 사전에 많은 작업(library 추가, dependency 설정, 여러 가지 구성 및 설정)을 해야 했다.

 

SpringBoot의 장점

- project에 따라 자주 사용되는 library들이 미리 조합되어 있다.


- 복잡한 설정을 자동으로 처리해준다.


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


- WAS에 배포하지 않고도 실행할 수 있는 JAR파일로 Web Application을 개발할 수 있다.

 

 

SpringBoot project 생성 구조 및 주요 구성 폴더/파일

◇프로젝트의 주요 파일 설명

src/main/java

- java source directory


HelloSpringBootApplication.java

- application을 시작할 수 있는 main 메소드가 존재하는 스프링 구성 메인 클래스


static

- css, js, img 등의 정적 resource directory


templates

- SpringBoot에서 사용 가능한 여러 가지 View Template(Thymeleaf, Velocity, FreeMarker 등) 위치


application.properties

- application 및 스프링의 설정 등에서 사용할 여러 가지 property를 정의한 파일


src/main

- jsp 등의 resource directory

 

 

 SpringBoot 관련 Annotation

 

@SpringBootApplication

@SpringBootApplication으로 인해 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정한다.
SpringApplication.run()을 이용해서 이 어노테이션을 붙인 클래스를 실행하면 여러 설정을 자동으로 처리한다.
웹 starter를 사용하면 웹 관련 자동 설정 기능을 활성화하고 JDBC starter를 사용하면 DB 관련 자동 설정 기능을 활성화한다.
필요한 대부분의 설정을 자동으로 생성하므로 개발자는 필요한 것만 골라서 설정하면 된다.
그리고 컴포넌트 스캔 기능도 활성화한다. @Component, @Service, @Controller, @RestController 등 컴포넌트 스캔 대상 어노테이션을 붙인 클래스를 빈으로 등록한다.

@SpringBootConfiguration
기존 @Configuration과 마찬가지로 해당 클래스가 @Bean메서드를 정의되어 있음을 스프링 컨테이너에 알려주는 역할을 한다.
사용자가 추가적으로 빈이나 설정 클래스들을 등록 가능하게 한다.

@EnableAutoConfiguration
스프링 부트의 Application Context 설정을 자동으로 수행한다는 어노테이션
META-INF/spring.factories에 정의되어 있는 configuration 대상 클래스들을 빈으로 등록한다.
모든 클래스를 등록하지 않고 class 내부에 정의된 어노테이션에 따라 조건에 부합하는 class들만 생성된다.
jar properties를 기반으로 자동으로 의존성 설정

@ComponentScan
해당 어노테이션 하위에 있는 객체들 중 @Component가 선언된 클래스들을 찾아 Bean으로 등록하는 역할을 한다.
@EnableAutoConfiguration이 스캔하기 전에 먼저 @ComponentScan이 진행된다.
@Component가 적용된 클래스들을 스캔하여 자동으로 빈 등록

 

 

 

 

 

 

 

 

 

 

728x90