Java

[Spring Boot] 자동 설정 JAR 파일 생성 및 사용 방법

cob 2023. 6. 5. 00:37

 

* 공식 문서
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-developing-auto-configuration

 

 


1. 프로젝트 생성

Maven 선택 => [Next] 클릭

프로젝트 생성

 

 

프로젝트명

  • 프로젝트명은 네이밍 규칙에 맞게 작성한다.
    - 자동 설정 모듈 : '기술명-spring-boot-autoconfigure'
    - 필요한 의존성 정의 모듈 : '기술명-spring-boot-starter'
    - 하나의 모듈만 만들 경우 : '기술명-spring-boot-starter'

 

 


2. 의존성 추가(pom.xml)

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • autoconfigure, processor의 의존성들의 버전관리를 하기 위해 dependencyManagement 추가

 

 


3. 자동 설정 파일 생성(@Configuration 파일)

Cocococo라는 클래스를 자동 설정해 주는 설정 파일을 만든다.

@Configuration 파일

  • @SpringBootApplication에서는 Bean등록은 총 2번을 진행하게 된다. 
    - 1차 ComponentScan : 실행 프로젝트 내부에서 스캔
    - 2차 
    EnableAutoConfiguration(자동 설정) : 자동화 설정 파일 및 의존성에 추가된 파일들을 스캔
    2차 스캔에서 셋팅 된 값이 마지막 값이 되기 때문에 1차 스켄에 등록되어도 2차 스캔 데이터가 출력 되게 된다.
  • @ConditionalOnMissingBean : 해당 타입의 Bean이 없을 경우만 Bean을 등록한다.

 

 


4. 팩토리 파일 생성

src/main/resource/META-INF경로에 spring.factories 파일 만든다.  spring.factories 파일은 Spring에서 제공한다. (Spring Boot 3.0 이상 버전 부터는 spring.factories 사용하는 방법이 변경되어 아래 글 처럼 사용 x)

spring.factories

  • Configuration 파일을 명시적으로 정의해 주면 @EnableAutoConfiguration가 읽어 들인다.

 

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  org.example.CocococoConfiguration

 

 


5. properties 설정 방법

application.properties 파일에서 쉽게 값을 설정하기 위한 방법

5-1) 의존성 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

 

 

5-2) Properties 클래스 생성

Properties 클래스

  • ConfigurationProperties : 사용할 Prefix를 설정한다.

 

 

5-3) 자동 설정 파일 (@Configuration 파일) 수정

@Configuration

  • EnableConfigurationProperties : 사용할 Properties 클래스 적용
  • 입력받은 설정 값으로 세팅해 Bean에 등록한다.

 

 


6. Build (JAR 파일 생성)

install 더블 클릭하여 Build 하면 JAR 파일이 만들어진다.

프로젝트 Build

  • 프로젝트를 Build를 해성 생성된 JAR파일이 다른 Maven 프로젝트에서 사용할 수 있도록 로컬 Maven 저장소에 설치된다.

 

 

 


7. 다른 프로젝트에 자동 설정 파일(JAR파일)에 대한 의존성 추가

7-1) 의존성 정보 복사

 

 

7-2) 사용할 프로젝트에 의존성 추가

 

 

 


7. application.properties 파일 수정

properties 파일

  • 5번에서 설정한 Properties 클래스에 값을 세팅하여 Bean 등록

 

 

 


8. 자동 설정을 통해 등록된 Bean 사용

Bean

  • ApplicationRunner : 애플리케이션으로 만들어지면 자동으로 실행된다. 

 

 

 

반응형