Spring/Boot

스프링 부트 원리03 - 자동 설정

Bong Gu 2020. 10. 27. 19:19
728x90

springboot

스프릥 부트 개념과 활용03(inflearn) - 백기선

Spring boot

자동 설정 이해

자동 설정 만들기 Starter와 Autoconfigure

  • 자동설정 프로젝트 네이밍 패턴
    • Xxx-Spring-Boot-Autoconfigure : 자동 설정
    • Xxx-Spring-Boot-Starter : 필요한 의존성 정의
    • 그냥 하나로 만들고 싶을 때는? Xxx-Spring-Boot-Starter

구현방법

  • 의존성 추가
<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>
  • @Configuration 파일 작성
    springboot

    • Holoman이라는 객체가 있다고 가정한다.(name, howlong 필드값 가짐)
  • src/main/resource/META-INF에 spring.factories 파일 만들기

  • spring.factories 안에 자동 설정 파일 추가
    springboot

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    Configuration 클래스 파일 위치 정의
  • mvn install
    springboot

    • 다른 메이븐 프로젝트에서도 사용할 수 있도록 로컬 메이븐 프로젝트에 설치한다.

    • 사용 시에는 아래의 내용을 사용한다.
      springboot

  • 다른 메이븐 프로젝트에서 설치한 의존성을 추가하고 사용한다.
    springbootspringboot

문제점

springboot

  • ComponentScan이 먼저 빈으로 등록하고 autoConfiguration으로 빈으로 등록한다.
    따라서, 따로 빈으로 Holoman을 등록 시, 오류가 발생하거나, 덮어써진다.

자동 설정 만들기 @ConfigurationProperties

  • 위의 문제점을 해결할 수 있다.

  • 덮어쓰기 방지하기
    springboot

  • 빈 재정의 수고 덜기

    • 빈으로 매번 등록(재정의)하는 수고를 덜어준다.

    • 프로퍼티의 정의한 값으로 빈을 등록한다. (설정 프로젝트에서..)

    • @ConfigurationProperties(“properties에서 쓸 이름”)
      springboot

    • 위의 네모박스를 클릭하면 자동완성을 위한 의존성 추가에 대한 정보가 나온다.
      springboot

      • 의존성을 추가한다.
        springboot
    • @EnableConfigurationProperties(@ConfigurationProperties를 사용한 클래)
      springboot

    • 프로퍼티 키값 자동 완성
      springboot


728x90