0

我有一个小问题,我真的不知道为什么会这样

@RefreshScope
@Configuration
@Getter
public class ConfigProperties {

   @Value("${receipts.Application}")
   private String application;
   @Value("${receipts.ApplicationIdMT}")
   private String applicationIdMT;
   @Value("${receipts.IdComercioMT}")
   private String idComercioMT;
   //more properties
}

我有这个配置类我从 application.yml 获取值这个文件在 git 存储库中,因为我的项目使用配置服务器来获取值

我在 git repo 中的 application.yml 看起来像这样:

receipts:
   Application: NAVERU
   ApplicationIdMT: b96f9c62-e6a
   IdComercioMT: 02500000012
   //more properties

当我获取值时发生了一些奇怪的事情,我的类的一个例子是这样的:

   //logic and imports....
   public class ClientBase {

       @Autowired
       protected ConfigProperties configProperties;

       public void printValues(){

       String application= configProperties.getApplication();
       String applicationIdMT= configProperties.getApplicationIdMT();
       String idComercioMT= configProperties.getIdComercioMT();
       System.out.println("aplication: "+application);
       System.out.println("idMt: "+applicationIdMT);
       System.out.println("idComerceMt: "+idComercioMT);
       }
       
  }

当我在控制台中看到值时:

     aplication: NAVERU
     idMt: b96f9c62-e6a
     idComerceMt: 352321546

我不明白为什么idComerceMt带有该值,因为就像我显示的实际值是02500000012

4

2 回答 2

1

问题是 的值IdComercioMT被读取为数字,并且以 0 为前缀,它被解析为octal

02500000012(八进制) =352321546 (十进制)

由于 Configuration 类希望将值作为字符串,因此您可以通过引用该值轻松修复它:

receipts:
   Application: NAVERU
   ApplicationIdMT: b96f9c62-e6a
   IdComercioMT: '02500000012'
   # more properties
于 2021-03-12T22:23:57.430 回答
0

检查 target\BOOT-INF\classes 中的属性文件中的值

于 2021-03-12T22:15:07.233 回答