스프링 부트의 구성 요소
네 가지 분류
- AutoConfigurator
- 설정을 간소화
- 스프링 부트를 가능하게 하는 핵심 컴포넌트
- Starter
- 스프링 기반의 다양한 모듈 사용 가능
- CLI
- 커맨드로 실행 가능
- Actuaotr
- 모니터링 기능 제공
@SpringBootApplication
-
@SpringBootApplication
- 여러 개의 어노테이션들이 포함된 어노테이션
- SpringBootApplication = ComponentScan + configuration + EnableAutoConfiguration
- EnableAutoConfiguration은 설정 간소화를 위해 가장 큰 역할을 함
@EnableAutoConfiguration
Starter
- AutoConfigurator를 기반으로 스프링 부트 어플리케이션에서 별도의 설정 없이 편리하게 사용할 수 있도록 만든 모듈 규격
- 하나의 어플리케이션을 다수의 모듈로 구성하고자 할 경우에 BootStarter를 이용해서 여러 개의 모듈로 만들어서 관리할 수 있음
CLI
- CLI(Command-Line Interface)
- 스프링 부트 어플리케이션을 JAR로 패키징하면 main 클래스는 jarLauncher가 된다.
- jarLauncher가 main을 로드하며 커맨드를 입력받을 수 있으며
- 이를 이용해서 프로젝트를 구성 및 실행, 테스트 등이 가능
Actuator
- Actuator
- 어플리케이션 관리에 필요한 정보를 제공하는 역할
- Actuator jar 파일을 클레스 파일에 추가하면 URL에 힙ㅁ 메모리, 서버 상태 등 모니터링에 필요한 정보 확인 가능
스프링 부트 스타터 만들기
- 기존 프로젝트를 스프링 부트로 변경의 어려움을 해소해보기
- 비즈니스 로직을 추가해서 사용
- autoconfigure 라이브러리를 사용
스타터 개발 환경 구축
build.grade 프로젝트 구성
- 의존성 추가
-
compile group: 'org.springframework.boot', name: 'spring-boot-autoconfigure', version: '1.5.8.RELEASE'
```java plugins { id ‘java’ id ‘org.springframework.boot’ version ‘1.5.8.RELEASE’ }
-
ext{ springBootVersion=’1.5.8.RELEASE’ }
repositories { jcenter() }
bootRepackage.enabled = false
jar{ baseName=’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'
testCompile 'junit:junit:4.12' } ``` - `basename: `다른 프로젝트에서 사용할 이름을 지정
Meta 정보 등록
- 직접 만든 클래스에 설정 자동화를 적용하기
- META-INF 폴더 하위에 spring.factories 파일을 작성
- spring.factories에는 설정 자동화를 적용할 클래스를 등록
- 설정 역할을 하는 클래스에 각 서비스들을 등록
org.springframework.boot.autoconfigure.EnableAutoConfiguration=info.thecodinglive.config.HelloServiceAutoConfiguration
설정 클래스 생성
@Configuration
@ConditionalOnClass(HelloService.class)
public class HelloServiceAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public HelloService helloService(){return new ConsoleHello();}
}
-
@ConditionalOnClass
- HelloService 클래스가 존재하는 경우 사용 가능하도록 함
커스텀 스타터 클래스 사용
- build 시 jar파일이 생성됨
- 이 파일을 타 프로젝트에 복사해서 사용
- 타 프로젝트에 lib폴더 위 jar파일을 옮긴다.
- build.gradle에 의존성을 추가한다.
compile files('lib/spring-boot-helloSerice-starter-1.0.0-SNAPSHOT.jar')
- 해당 내용을 import 해서 사용한다.
@SpringBootApplication
@ComponentScan(basePackages = "info.thecodinglive.service", basePackageClasses = HelloService.class)
public class UseCustomStarterApp {
public static void main(String ar[]) {
SpringApplication.run(UseCustomStarterApp.class, ar).getBean(HelloService.class).hi();
}
}