복붙노트

[SPRING] Spring 응용 프로그램 속성에서 사용자 정의 객체를 가져올 수 있습니까?

SPRING

Spring 응용 프로그램 속성에서 사용자 정의 객체를 가져올 수 있습니까?

application.yaml에서 자신의 객체를 가져 와서 @Value로 내 구성 요소에 바인딩 할 수 있습니까?

모델:

@Data
public class CurrencyPlan {
    private String id;
    private String basePrice;
    private String merchantId;
}

application.yml :

plans:
  eur:
    id: id
    basePrice: 5
    merchantId: someid

내가 뭘하려고하는지 :

@Value("${plans.eur}") CurrencyPlan eurPlan

내가 얻는 것 :

java.lang.IllegalArgumentException: Could not resolve placeholder 'plans.eur' in value "${plans.eur}"

이것은 가능한가? 그렇다면 어떻게해야합니까? 나는 아이디어에서 꽤 벗어났다. (

미리 감사드립니다;)

해결법

  1. ==============================

    1.속성을 클래스에 바인딩하려는 경우 @ConfigurationProperties를 사용할 수 있습니다.

    속성을 클래스에 바인딩하려는 경우 @ConfigurationProperties를 사용할 수 있습니다.

    https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties

    @ConfigurationProperties (접두사 = "plans.eur") 및 @Component는 CurrencyPlan에 배치됩니다. @EnableConfigurationProperties는 @Configuration 클래스에 배치하는 것이 바람직합니다.

    CurrencyPlan 클래스를 종속 클래스에 autowire 할 수 있습니다.

  2. from https://stackoverflow.com/questions/46055112/is-it-possible-to-get-custom-object-from-spring-application-properties by cc-by-sa and MIT license