首页 > 解决方案 > 来自类字段/成员的 Spring SPEL 默认 @Value

问题描述

如何从类字段/成员设置@Value 默认值?我有一个带有 @Value 注释字段的 Spring @Bean 类,我需要该字段的默认值来自类成员/字段值。在我的示例中,我需要 maxNumOfThreads 字段从 DEFAULT_MAX_NUM_OF_THREADS 中获取其默认值。

@Configuration
public class AppConfig {

   @Value("${jobs.max-num-of-threads:....??..}") // <<== howto ?
   private Integer maxNumOfThreads;

   public final Integer DEFAULT_MAX_NUM_OF_THREADS = 10;
}

我该怎么做呢 ?

标签: javaspringspring-el

解决方案


类字段默认值可以是使用 spel '@' bean 引用语法的引用:@beanName.fieldName

例如:当 bean 名称为 'AppConfig' 并且我们需要引用的字段为 DEFAULT_MAX_NUM_OF_THREADS@appConfig时用作 bean 名称(类名 AppConfig 以小写字母开头)点 '.' 字段名称。借助于:@appConfig.DEFAULT_MAX_NUM_OF_THREADS

@Configuration
public class AppConfig {

   @Value("#{'${jobs.max-num-of-threads:}' ?: @appConfig.DEFAULT_MAX_NUM_OF_THREADS}")
   private Integer maxNumOfThreads;

   public final Integer DEFAULT_MAX_NUM_OF_THREADS = 10;

   @PostConstruct
   public void init(){
       System.out.println("@PostConstruct init() - in.");
   }
}

由 yl.


推荐阅读