我遇到了一个问题,我尝试收听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的价值尚未解析。
答案 0 :(得分:0)
拆分应该返回一个String数组,而不是一个列表。试试这个:
@Value("#{'${api.server.round.card}'.split(',')}")
private String[] cardList;