Kotlin Spring Boot 구성 속성 모범 사례

이미 Spring에서 꽤 발전했다면 the example으로 이동하십시오.

우리는 무엇을 가지고



모든 개발자가 활용하는 첫 번째 기능 중 하나는 Spring Boot 스택에서 작업하는 것입니다Configuration Properties.

다음과 같이 구성할 수 있습니다.
  • 클래스 수준 콩
  • 메서드 기반 콩

  • 기본적으로 메서드 수준 빈은 클래스 수준과 동일하지만 단일 클래스에서 N개의 속성 빈을 생성할 수 있습니다.

    속성 자체는 다양한 방식으로 전파될 수 있지만 가장 일반적인 방법은 애플리케이션 속성/yaml 파일을 통한 것입니다.

    그들이 될 수 있는 속성에 대한 중요한 사항은 다음과 같습니다.
  • 기본값

  • 명명



    Spring은 구성(bean이 있는 클래스) 및 구성 속성 클래스에 대한 다음 규칙을 따릅니다.
  • @Configuration - *Configuration.kt
  • @ConfigurationProperties - *Properties.kt

  • 다음과 같이 혼동을 방지하기 위해 사용하는 생태계의 표준을 따르는 것이 좋습니다.

    Properties class is not a configuration



    안티패턴



    구성과 속성의 차이점


  • 구성 - bean을 정의하는 클래스입니다
  • .
  • 속성 - 응용 프로그램 속성을 설명하기 위해 데이터 구조를 정의하는 클래스입니다. 속성을 객체에 매핑하기 위해

  • 다음 예제는 스프링이 이러한 개념과 다르게 작동하기 때문에 안티 패턴입니다.

    @Configuration
    @ConfigurationProperties
    class MyProperties {
      String value;
    }
    

    구성 속성 빈은 수동이 아닌 Spring에 의해 초기화되어야 합니다.



    다음 예는 구성 속성이 bean이 구성과 느슨하게 결합될 때 훨씬 더 자연스럽게 초기화될 수 있기 때문에 패턴 방지입니다. 예를 들어 @ConstructorBinding를 사용하면 a problem입니다.

    @Component
    @ConfigurationProperties
    class MyProperties {
      String value;
    }
    

    표준, 코드 일관성



    모범 사례의 목표는 황금률을 찾는 것입니다. 데이터 구조가 속성과 클래스 간의 매핑을 깔끔한 방식으로 나타낼 것으로 기대하는 곳입니다.
  • 기본값은 개발자가 즉시 볼 수 있도록 필드에 최대한 가깝게 위치해야 합니다
  • .
  • null 허용 여부는 속성
  • 의 실제 필요성을 나타내야 합니다.
  • 심플해야지
  • 복합 하위 필드가 동일한 방식으로 설계됨

  • 모든 요구 사항을 충족하면 다음 예제가 있습니다.

    데모






    다음과 같은 속성 집합이 정의되어 있다고 가정해 보겠습니다.




    io.github.artemptushkin.example:
      defaultOverriddenProperty: overridden
      requiredStringProperty: required-value
      notNullListProperty: ["foo", "baz"]
    


    다음 런타임 속성을 ​​제공합니다.




    io.github.artemptushkin.example.defaultedStringProperty=default
    io.github.artemptushkin.example.defaultOverriddenProperty=overridden
    io.github.artemptushkin.example.requiredStringProperty=required-value
    io.github.artemptushkin.example.optionalStringProperty=null
    io.github.artemptushkin.example.notNullListProperty[0]=foo
    io.github.artemptushkin.example.notNullListProperty[1]=baz
    


    요점은 다음과 같습니다.



    • @ConstructorBinding 우리 use create immutable objects
    • Kotlin 기본 생성자 값을 사용하면 기본값을 한 줄에 바로 사용할 수 있습니다
    • .
    • Null 허용 필드를 방지하기 위해 컬렉션을 기본적으로 항상 빈 상태로 초기화합니다
    • .


    요약



    깔끔한 클래스를 작성하고 한 프로젝트에서 다른 프로젝트로 그리고 회사 내에서 간결하게 유지할 수 있습니다.



    이 메모가 도움이 되었기를 바랍니다.

    좋은 웹페이지 즐겨찾기