▶ 스프링 부트 모듈
크게 네가지 부분으로 나눌 수 있다
명칭 | 역할 | 비고 |
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가 없지만, 사용 가능
'CS > Web' 카테고리의 다른 글
Annotation (어노테이션)과 스프링 부트 어노테이션 (0) | 2020.09.05 |
---|---|
HTTP 요청 흐름 이해하기 (0) | 2020.08.29 |
스프링 프레임워크란? ( IoC, 스프링 mvc ) (2) | 2020.08.15 |
REST와 REST API (6) | 2020.08.10 |
댓글