复用一个老项目代码,发现@value注解失效了?
附上百度找到的原因:
@Value的注意事项:
1.不能作用于静态变量(static);
2.不能作用于常量(final);
3.不能在非注册的类中使用(类需要被注册在spring上下文中,如用@Service,@RestController,@Component等);
4.使用这个类时,只能通过依赖注入的方式,用new的方式是不会自动注入这些配置的。
这些我都不符合/(ㄒoㄒ)/~~
绞尽脑汁下突然发现方法是私有的,
//版本是5.1.7的
@Value("${qrcode_image_url}")
private String qrcodeImageUrl;
@RequestMapping(value = "updateErecordQrCode", method = RequestMethod.POST)
private void updateErecordQrCode(@ApiParam(value = "家庭id") @RequestParam(required = true) String locationId) {
log.info("qrcodeImageUrl:{}",qrcodeImageUrl);
}
那改成public呢?竟然可以了
具体原因还没找到,写了一个demo,私有方法也是可以的,



