본문 바로가기
CS/Web

스프링부트의 구성요소와 커스텀 스프링 부트 스타터

by 장장 2020. 9. 5.

▶ 스프링 부트 모듈

크게 네가지 부분으로 나눌 수 있다

명칭 역할 비고
AutoConfigurator 설정을 간소화 핵심 컴포넌트
Starter 스프링 기반의 다양한 모듈 사용 가능 각 모듈별로 제공되며 boot-starter-모듈명과 같은 작명 규칙이 있다.
CLI 스프링부트로 만든 애플리케이션을 커맨드로 실행 가능 spring run
Actuator 스프링 부트로 만든 애플리케이션을 모니터링할 수 있는 기능을 제공 별도의 JAR 파일을 클래스패스에 추가한 후 사용 가능

 

1. AutoConfigurator

 

스프링 부트를 가능하게 하는 핵심 컴포넌트이다.

 

1-1. @SpringBootApplication

 

본질적으로는 @Configuration과 같으나 스프링 부트를 위한 설정임을 나타내기 위해 쓰인다.

SprintBootApplication = ComponentScan과 Configuration, EnableAutoConfiguration을 합친 어노테이션.

 

 

2. Starter

 

스타터는 AutoConfigurator를 기반으로 스프링 부트 애플리케이션에서 별도의 설정없이 편리하게 사용할 수 있도록 만든 모듈 규격.

 

BootStarter 를 사용하면 관련된 의존성이 자동으로 추가!

 

 

 

3. CLI (Command-Line Interface)

 

스프링부트 애플리케이션을 JAR로 패키징하면 main클래스가 jarLauncher가 된다.

jarLauncher 가 main 클래스를 로드하는 형태로 전환되어 커맨드를 입력 받음.

커맨드 라인을 이용해서 프로젝트를 구성하거나 실행, 테스트!

 

 

4. 액추에이터(Actuator)

 

애플리케이션 관리에 필요한 정보를 제공하는 역할.

Actuator jar 파일을 클래스 파일에 추가하면, REST API 처럼 URL에 힙 메모리, 서버 상태 등 모니터링에 필요한 정보를 확인할 수 있다.

 

단, 프로젝트에서 spring-web-mvc 를 사용하고 있어야 사용 가능!

 

액추에이터 실행 예시

 


 

스프링 부트 스타터

 

개발환경 구축

 

1.1 build.gradle

plugins {
	id 'java'
    id 'org.springframework.boot' version '1.5.8.RELEASE'
}

ext {
	springBootVersion='1.5.8.RELEASE'
}

repositories {
	jcenter()
}

bootRepackage.enabled = false

jar {
	backName='spring-boot-helloService-starter'
	version='1.0.0-SNAPSHOT'
}

dependencies {
	compile group: 'org.springframework.boot', name:'spring-boot-autoconfigure',
    version: '1.5.8.RELEASE'
    compile: 'org.slf4j:slf4j-api:1.7.21'
}

 

다른 프로젝트에서 사용할 이름을 baseName에 지정.

 

1.2 Meta 정보

 

설정 자동화를 적용하려면 META_INF 폴더 하위에 spring.factories 파일을 작성하여 적용할 클래스를 등록한다.

 

org.springframework.boot.autoconfigure.EnableAutoConfiguration
= info.thecodinglive.config.HelloServiceAutoConfiguration(사용자가 설정한 클래스)

 

1.3 설정 클래스 생성

 

@Configuration
@ConditionalOnClass(HelloService.class)
public class HelloServiceAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean
    public HelloService helloService() { return new ConsoleHello(); }
}

 

ConditionalInClass -> HelloService 클래스가 존재하는 경우 사용한다는 뜻.

 

HelloService와 ConsoleHello 파일도 구현.

 

 

1.4 커스텀 스타터 클래스 사용

 

프로젝트를 build하면 jar파일이 생성된다 (build/libs에 생성)

 

[새 프로젝트]

새 프로젝트 하위에 lib 폴더를 만들고 jar를 복사.

build.gradle 파일에서 dependencies에

compile files('lib/spring-boot-helloService-starter-1.0.0-SNAPSHOP.jar')

추가해서 사용

 

=> 새 프로젝트안에 HelloService가 없지만, 사용 가능

 

댓글