Book/스프링부트 핵심가이드

[Spring] 스프링부트(Spring Boot) 설명과 특징

블로그 주인장 2023. 10. 16.

스프링 부트(Spring Boot)

스프링이 제공하는 다양한 프로젝트 중 하나인 스프링 부트의 특징을 알아보겠습니다.


스프링부트

  • 독립적이며, 운영할 수 있는 수준의 Spirng 기반 어플리케이션을 쉽게 만들 수 있게 해준다.
  • 최소한의 설정으로 Spring 플랫폼과 서드파티 라이브러리를 사용할 수 있다.
  • 대부분의 Spring Boot 어플리케이션은 최소한의 Spring 설정을 필요로 한다.


스프링부트의 특징

1. 의존성 관리

  • 'spring-boot-starter' 라는 의존성을 이용하여 각 라이브러리의 호환되는 버전의 모듈 조합을 제공하여 문제를 해결한다.
  • spring-boot-start 라이브러리 카테고리
    1. spring-boot-starter-web : 스프링 MVC를 사용하는 RESTful 어플리케이션을 만들기 위한 의존성으로, 기본적으로 톰캣(Tomcat)이 포함되어 jar 형식으로 실행 가능하다.
    2. spring-boot-starter-test : JUnit Jupiter, Mockito 등의 테스트용 라이브러리를 포함
    3. spring-boot-starter-jdbc : HikariCP 커넥션 풀을 활용한 JDBC 기능을 제공한다.
    4. spring-boot-starter-security : 스프링의 보안 기능을 제공
    5. spring-boot-starter-data-jpa : Hibernate를 활용한 JPA 기능을 제공
    6. 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을 합쳐놓은 구성
        1. @ComponentScan 어노테이션이 @Component 시리즈 어노테이션(ex. @Controller, @Service, @Repository 등) 이 붙은 클래스를 발견해서 Bean 등록
        2. @EnableAutoConfiguration 어노테이션을 통해 spring.factories 파일을 추가하여 자동 설정이 적용
        3. 각 파일에 설정된 @Conditional 조건이 충족할 경우 Bean에 등록되고 어플리케이션에 자동 반영된다.

 

3. 내장 WAS

  • 스프링부트의 각 웹 애플리케이션에는 내장 WAS(Web Application Server)가 존재한다.
  • 스프링부트의 자동 설정기능은 톰캣에서도 적용되므로 특별한 설정 없이 실행이 가능하다.
  • 톰캣이 아닌 다른 웹 서버(Jetty, Undertow 등) 대체 가능하다.

4. 모니터링

  • 개발 이후 서비스 운영 시에 해당 시스템이 사용하는 스레드, 메모리, 세션 등의 주요 요소 등을 모니터링 해야한다.
  • 스프링 부트에는 스프링 부트 액추에이터(Spring Boot Acutuator) 라는 자체 모니터링 도구가 있다.
반응형

댓글