Spring @Value中的云配置和SpEL
我遇到了一个问题,我尝试侦听EnvironmentChangeEvent并重新初始化一些配置 虽然我发现带有SpEL的@Value注释不起作用,但是普通的@Value注释是可以的:Spring @Value中的云配置和SpEL,spring,spring-boot,Spring,Spring Boot,我遇到了一个问题,我尝试侦听EnvironmentChangeEvent并重新初始化一些配置 虽然我发现带有SpEL的@Value注释不起作用,但是普通的@Value注释是可以的: @Component public class ConsumeService { @Autowired ConsumeConfig consumeConfig; @EventListener(EnvironmentChangeEvent.class) void onEnvChange()
@Component
public class ConsumeService {
@Autowired
ConsumeConfig consumeConfig;
@EventListener(EnvironmentChangeEvent.class)
void onEnvChange() {
log.debug("{}",consumeConfig);
//when i print here, i get only consumeDesc, but cardList is an empty List.
}
}
@Configuration
@RefreshScope
public class ConsumeConfig {
@Value("${consume.desc}")
private String consumeDesc;
@Value("#{'${api.server.round.card}'.split(',')}")
private List<String> cardList;
}
@组件
公共类消费服务{
@自动连线
ConsumeConfig ConsumeConfig;
@EventListener(EnvironmentChangeEvent.class)
void onEnvChange(){
log.debug(“{}”,consumeConfig);
//当我在这里打印时,我只得到consumeDesc,但cardList是一个空列表。
}
}
@配置
@刷新范围
公共类ConsumeConfig{
@值(${consume.desc}”)
私有字符串consumerdesc;
@值(“#{${api.server.round.card}.split(',')}”)
私人名单;
}
问题:
这个问题是否与SpEL的生命周期有关?似乎SpEL的值尚未解析。拆分应该返回字符串数组,而不是列表。试试这个:
@Value("#{'${api.server.round.card}'.split(',')}")
private String[] cardList;
你说“SpEL的@Value注释不起作用”是什么意思?您得到的是异常、空列表还是空列表?请在这里提供您试图解析的
api.server.round.card
确切值。这里一定是出了问题。SpEL可以处理列表或数组。当我的意思是不工作时,我得到了一个空列表。我在github项目存储库中发布了一个问题,得到了答案:不支持SpEL。