Boot Starter

WebStudy/Spring / / 2021. 7. 22. 22:08

@AutoConfigurationPackage

  • @AutoConfigurationPackage
    • 스프링 부트로 만든 어플리케이션 내에서
    • 이 어노테이션이 선언된 패키지 경로를 스프링 콘텍스트가 스캔 가능하도록 하는 역할
  • pass

@AutoConfigurationProperties

  • @AutoConfigurationProperties
    • 프로퍼티와 매핑된 클래스를 사용할 때 @Bean 대신 사용할 수 있는 어노테이션
    • @Configuration이나 @Component와 같은 어노테이션들이 클르새 내부에 선언되어 있지 않아서
      • 빈으로 등록할 수 없는 경우에 사용 할 수 있음
  • 프로퍼티 그룹화에 사용
  • pass

스프링 부트의 구성 요소

네 가지 분류

  • 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'
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파일이 생성됨
    • 이 파일을 타 프로젝트에 복사해서 사용
  1. 타 프로젝트에 lib폴더 위 jar파일을 옮긴다.
  2. build.gradle에 의존성을 추가한다.
    • compile files('lib/spring-boot-helloSerice-starter-1.0.0-SNAPSHOT.jar')
  3. 해당 내용을 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();
    }
}

'WebStudy > Spring' 카테고리의 다른 글

Spring Cache  (0) 2021.07.28
예외 처리 및 테스트  (0) 2021.07.24
Annotation  (0) 2021.07.21
REST API 2  (0) 2021.07.20
REST API 1  (0) 2021.07.19
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기