스프링 부트(Spring Boot)
스프링이 제공하는 다양한 프로젝트 중 하나인 스프링 부트의 특징을 알아보겠습니다.
스프링부트
- 독립적이며, 운영할 수 있는 수준의 Spirng 기반 어플리케이션을 쉽게 만들 수 있게 해준다.
- 최소한의 설정으로 Spring 플랫폼과 서드파티 라이브러리를 사용할 수 있다.
- 대부분의 Spring Boot 어플리케이션은 최소한의 Spring 설정을 필요로 한다.
스프링부트의 특징
1. 의존성 관리
- 'spring-boot-starter' 라는 의존성을 이용하여 각 라이브러리의 호환되는 버전의 모듈 조합을 제공하여 문제를 해결한다.
- spring-boot-start 라이브러리 카테고리
- spring-boot-starter-web : 스프링 MVC를 사용하는 RESTful 어플리케이션을 만들기 위한 의존성으로, 기본적으로 톰캣(Tomcat)이 포함되어 jar 형식으로 실행 가능하다.
- spring-boot-starter-test : JUnit Jupiter, Mockito 등의 테스트용 라이브러리를 포함
- spring-boot-starter-jdbc : HikariCP 커넥션 풀을 활용한 JDBC 기능을 제공한다.
- spring-boot-starter-security : 스프링의 보안 기능을 제공
- spring-boot-starter-data-jpa : Hibernate를 활용한 JPA 기능을 제공
- spring-boot-starter-cache : 스프링 프레임워크의 캐시 기능을 지원한다.
- 'spring-boot-starter'의 여러 라이브러리를 함께 사용 시에 의존성이 겹칠 경우가 있기에 의존성 조합 충돌 문제가 없도록 'spring-boot-starter-parent'가 검증된 조합을 제공한다.
2. 자동 설정
- 스프링 프레임워크의 기능을 사용하기 위한 자동 설정(Auto Configuration)을 지원한다.
- 자동 설정 : 어플리케이션에 추가된 라이브러리를 실행하는 데 필요한 환경 설정을 알아서 찾아준다.
/* Sample 프로젝트 구성 */
@SpringBootApplication
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
/* @SpringBootApplication 어노테이션 구성 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
//...
}
-
- ex) 예시 @SpringBootApplication
- 스프링부트 프로젝트 생성 시에 @SpringBootApplication 어노테이션이 자동으로 생성
- @ComponentScan, @EnableAutoConfiguration, @SpringBootConfiguration을 합쳐놓은 구성
- @ComponentScan 어노테이션이 @Component 시리즈 어노테이션(ex. @Controller, @Service, @Repository 등) 이 붙은 클래스를 발견해서 Bean 등록
- @EnableAutoConfiguration 어노테이션을 통해 spring.factories 파일을 추가하여 자동 설정이 적용
- 각 파일에 설정된 @Conditional 조건이 충족할 경우 Bean에 등록되고 어플리케이션에 자동 반영된다.
- ex) 예시 @SpringBootApplication
3. 내장 WAS
- 스프링부트의 각 웹 애플리케이션에는 내장 WAS(Web Application Server)가 존재한다.
- 스프링부트의 자동 설정기능은 톰캣에서도 적용되므로 특별한 설정 없이 실행이 가능하다.
- 톰캣이 아닌 다른 웹 서버(Jetty, Undertow 등) 대체 가능하다.
4. 모니터링
- 개발 이후 서비스 운영 시에 해당 시스템이 사용하는 스레드, 메모리, 세션 등의 주요 요소 등을 모니터링 해야한다.
- 스프링 부트에는 스프링 부트 액추에이터(Spring Boot Acutuator) 라는 자체 모니터링 도구가 있다.
반응형
'Book > 스프링부트 핵심가이드' 카테고리의 다른 글
스프링부트 생성 (Feat. Spring Initializr) (2) | 2023.10.25 |
---|---|
GET 메서드 구현 방법(feat. @GetMapping) (0) | 2023.10.25 |
[Spring] 스프링부트 개발 기초 지식 (0) | 2023.10.18 |
댓글