zoukankan      html  css  js  c++  java
  • @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修饰
    论读书
    睁开眼,书在面前
    闭上眼,书在心里
  • 相关阅读:
    ES6和Node.js的import和export
    重写Router.prototype.push后还报NavigationDuplicated错误的解决方法
    nightwatch对前端做自动化测试
    使用video.js 7在html中播放rtmp视频流
    UEFI开发环境搭建
    类的静态成员
    const成员函数
    类和结构
    最长递增子序列
    C语言将十六进制字符串转化成十六进制
  • 原文地址:https://www.cnblogs.com/YC-L/p/14984866.html
Copyright © 2011-2022 走看看