@Value值为null、#和$的区别

获取属性值#

在springboot中通过PropertySources注解读取指定配置文件

@PropertySource(value = {"classpath:env.properties"}, encoding = "utf-8")

值为null#

这个属性在env.properties中

@Value(value="${auth_bili}")
private String auth_bili;

但是debug的时候这个值显示为null

被调用类的上半部分是这样子的

复制代码
@Component
public class BiliRequest implements Request {

    @Value(value="${auth_bili}")
    private String auth_bili;

    // TODO 修改构造函数
    private HttpHeaders _headers;

    private HttpEntity<String> formEntity;

    private Map<String, Object> maps;

    private RestTemplate restTemplate;

    public BiliRequest(){
        restTemplate = new RestTemplate();
    }
......
复制代码

而调用这个类所生成的被调用类的实例用的是new biliRequest(),这一步导致@Value注解失效

应该在调用类中这么写

复制代码
@Service(value = "ContentManagementService")
public class ContentManagementServiceImpl implements ContentManagementService {

    @Resource
    private UrlFactory urlFactory;

    @Resource
    private BiliRequest biliRequest;
......
复制代码

不用new关键字,使用注解,通过spring框架的方式实例化,而不是jvm层面的实例化

在网上查到的@Value的其他原因

  • 调用类类没有加上@Component(或者@service等)
  • 用static或者final修饰
posted @   BigBender  阅读(155)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
主题色彩