• 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的注解不支持静态的变量和方法)。

  • 相关阅读:
    IOCP六:UDP 客户端退出
    IOCP六:UDP 客户端退出
    IOCP五:UDP线程退出
    IOCP五:UDP线程退出
    IOCP四:己方closesocket
    IOCP四:己方closesocket
    深入剖析多态,什么是多态?多态有什么用?
    SSM框架jsp无法从webapp下跳转到WEB-INF下的jsp;偶尔进去了也无法加载jsp的静态资源
    一句话理解什么是“聚合”,什么是“组合”
    Jsp+Servlet+JDBC实现ATM机系统
  • 原文地址:https://www.cnblogs.com/lykbk/p/sadfsafef2345234324234.html
Copyright © 2020-2023  润新知