zoukankan      html  css  js  c++  java
  • 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的注解不支持静态的变量和方法)。

  • 相关阅读:
    xcode6创建工程时 默认去掉了PrefixHeader.pch
    KVC访问私有成员
    Apple Watch 中Context Menu的应用
    Apple Watch应用创建
    NSURLConnection加载数据并展示
    UIView 的exclusiveTouch clipsToBounds和transform属性
    Shell的一些基本用法
    NS_ENUM和NS_OPTIONS
    iOS国际化时遇到错误: the data couldn't be read because it isn't in the correct format.
    iOS8中UIAlertController的使用
  • 原文地址:https://www.cnblogs.com/lykbk/p/sadfsafef2345234324234.html
Copyright © 2011-2022 走看看