• SpringBoot使用@Value从yml文件取值为空--注入静态变量


    SpringBoot使用@Value从yml文件取值为空--注入静态变量

    1.application.yml中配置内容如下:

    1.  
      pcacmgr:
    2.  
      publicCertFilePath: E:\pcacmgr\CerFiles\xh_public.cer
    3.  
      encPublicCertFilePath: E:\pcacmgr\CerFiles\hjzf_encPublic.cer
    4.  
      encPfxFilePath: E:\pcacmgr\CerFiles\hjzf_encPfx.pfx
    5.  
      encPfxFilePwd: 11111111

    2.通过@Value获取值:

    1.  
      @Configuration
    2.  
      public class PcacIntegrationUtil {
    3.  
      @Value("${pcacmgr.publicCertFilePath}")
    4.  
      private static String publicCertFilePath;
    5.  
       
    6.  
      @Value("${pcacmgr.encPfxFilePath}")
    7.  
      private static String encPfxFilePath;
    8.  
       
    9.  
      @Value("${pcacmgr.encPfxFilePwd}")
    10.  
      private static String encPfxFilePwd;
    11.  
       
    12.  
      @Value("${pcacmgr.encPublicCertFilePath}")
    13.  
      private static String encPublicCertFilePath;
    14.  
       
    15.  
      public static String signData(String sourceData) {
    16.  
      System.out.println(publicCertFilePath);
    17.  
      }
    18.  
      }

    3.启动项目调用过程中发现获取值为null。

    4.发现是static导致,以下为解决方案:

    1.  
      @Configuration
    2.  
      public class PcacIntegrationUtil {
    3.  
      private static Logger logger = LoggerFactory.getLogger(PcacIntegrationUtil.class);
    4.  
       
    5.  
      private static String publicCertFilePath;
    6.  
      public static String getPublicCertFilePath() {
    7.  
      return publicCertFilePath;
    8.  
      }
    9.  
      @Value("${pcacmgr.publicCertFilePath}")
    10.  
      public void setPublicCertFilePath(String publicCertFilePath) {
    11.  
      PcacIntegrationUtil.publicCertFilePath = publicCertFilePath;
    12.  
      }
    13.  
       
    14.  
      public static String signData(String sourceData) {
    15.  
      System.out.println(publicCertFilePath);
    16.  
      }
    17.  
      }

    问题解决,打印结果与yml文件配置的内容相符。

    心得:使用注解的方式,不过注解写在非static的方法上(Spring的注解不支持静态的变量和方法)。

  • 相关阅读:
    博客园添加访问人数统计【转】
    Android环境下通过C框架层控制WIFI【转】
    用户态文件系统fuse学习【转】
    linux内核 RCU机制详解【转】
    使用diff制作补丁【学习笔记】
    OAuth2授权原理
    Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)
    lock关键字只不过是C#提供的语法糖
    关于OATUH中的AUTHRAZITON CODE和TOKEN的关系,实际上就是这么回事
    SQL Server 索引设计指南
  • 原文地址:https://www.cnblogs.com/lykbk/p/sadfsafef2345234324234.html
Copyright © 2020-2023  润新知