Dark Theme

# bluesky-boot

## 1. 소개

bluesky-boot는 spring-boot를 기반으로 multi module 프로젝트를 사용하기 위한 기능들을 추가하여 관리하는 프로젝트입니다.
이 모듈의 기능을 기반으로 bluesky-boot-autoconfigure가 제공되며 autoconfigure를 사용하지 않고 직접 구현하여 사용할 수 있습니다.

## 2. 상세 기능

### 2.1. spring multi profile 지원

스프링의 `spring.profiles.active` 설정을 복수로 사용하여도 `blueksy-boot-autoconfigure` 의 설정 파일 관리에 영향이 없도록 하기 위해 `BlueskyEnvironmentPostProcessor` 를 통해 지정된 profile을 사용하여 관리하도록 합니다.

### 2.2. multi module 지원

여기에서 module은 maven의 module이 아닙니다.
하나의 웹 또는 앱 서비스가 실행되면 해당 서비스에서 요청에 따라 분기 처리가 필요한 경우가 있습니다.
예를 들어 웹서버 하나에서 도메인 별로 여러 웹을 제공해 줄 수 있습니다.
이런 경우 여러 웹에 대해 각각의 웹에 대해 다른 설정을 관리해야 합니다.

bluesky-boot에서는 BlueskyProperties 를 제공합니다.
해당 interface의 내용은 다음과 같습니다.

    public interface BlueskyProperties<T> {

        Map<String, T> getModules();

    }

Spring Boot에서 관리하는 ConfigurationProperties를 만드는 객체 interface이며 이 interface를 확장하여 modules map을 만들어 여러 개의 모듈을 관리할 수 있습니다.
또한 BlueskyProperties를 확장한 객체도 여러 개 만들 수 있습니다.

이 중 가장 핵심이 되는 기능을 제공하기 위해 BlueskyCoreProperties와 BlueskyCoreModuleProperties를 제공합니다.
bluesky-boot를 bluesky-boot-autoconfigure 없이 사용하고자 하는 경우 해당 interface의 구현이 필수입니다.

    public interface BlueskyCoreProperties<T extends BlueskyCoreModuleProperties> extends BlueskyProperties<T> {

        /**
         * module 호출 처리 방식 정의 <br />
         * [domain , addPathPattern, moduleNameResolver]
         */
        CoreModulePropertiesResolveType getResolveType();
        void setResolveType(CoreModulePropertiesResolveType resolveType);

    }