是否可以从spring应用程序属性中获取自定义对象?

时间:2017-09-05 12:33:58

标签: java spring spring-boot

是否可以从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 个答案:

答案 0 :(得分:6)

如果您希望将属性绑定到某个类,可以使用@ConfigurationProperties(prefix="plans.eur")

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

@ComponentCurrencyPlan会放在@EnableConfigurationProperties上。 @Configuration最好放在CurrencyPlan课程上。

您可以将{{1}}类自动装配到依赖类中。