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修饰
    论读书
    睁开眼,书在面前
    闭上眼,书在心里
  • 相关阅读:
    Dialog 对话框的文字与输入框不对齐
    ag-grid动态生成表头及绑定表数据
    ag-grid实时监测复选框变化
    Java-分页工具类
    Java-日期转换工具类
    文件上传与下载
    IDEA的安装与激活
    熟悉IDEA工具的使用
    缓存三大问题的解决办法
    制作一个省份的三级联动菜单
  • 原文地址:https://www.cnblogs.com/YC-L/p/14984866.html
Copyright © 2011-2022 走看看