@Value

时间:2017-10-13 10:59:00

标签: spring spring-boot

我遇到了一个问题,我尝试收听EnvironmentChangeEvent并重新启动一些配置。

虽然我发现使用SpEL的@Value注释不起作用,但是普通的@Value注释是正常的:

@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;
}

问题:

此问题是否与SpEL的生命周期有关?看起来,SpEL的价值尚未解析。

1 个答案:

答案 0 :(得分:0)

拆分应该返回一个String数组,而不是一个列表。试试这个:

@Value("#{'${api.server.round.card}'.split(',')}")
private String[] cardList;