переопределить значения по умолчанию в файле application.yml при весенней загрузке - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть файл конфигурации ниже.Если вы посмотрите на файл ниже, у меня есть prop.responseConfig.default, эти значения должны быть прочитаны для Android и IOS на основе устройства.Для ios у нас имя ios.actionLink.target другое.поэтому я хочу переопределить только это значение (значит, вместо REPLACE-LINK ', оно должно быть' LOST-DEEPLINK '), а остальные значения должны быть одинаковыми.аналогично, скажем, для Android, если у вас есть какое-либо значение, отличное от значений по умолчанию, тогда оно должно быть переопределено, а остальные должны оставаться такими же (в этом случае android.actionSwitch.method).Может ли какой-либо орган предоставить решение или пример кода для того же?

        prop:
          responseConfig:
            default:
              label1: 'label1'
              actionSwitch:
                target: 'some url'
                method: 'PUT'
                errorResponse: 'Its an error message'
              actionLink:
                target: 'REPLACE-LINK'
                data:
                  EXTRA_UUID: '{Id}'
            ios:     
              actionLink:
                target: 'LOST-DEEPLINK'
            android:     
              actionSwitch::
                 method: 'GET'

    private String target;
        private Map<String, String> data;
        private String method;
        private String cin;
        private String errorResponse;                    

1 Ответ

0 голосов
/ 06 декабря 2018

На самом деле вы можете решить эту проблему, определив конфигурацию таким образом:

 prop:
  responseConfig:
    ios: true
    default:
      label1: 'label1'
      actionSwitch:
        target: 'some url'
        method: 'PUT'
        errorResponse: 'Its an error message'
      actionLink:
        target: 'REPLACE-LINK'
        data:
          EXTRA_UUID: '{Id}'
    ios:     
      actionLink:
        target: 'LOST-DEEPLINK'
    android:     
      actionSwitch::
         method: 'GET'

Тогда в вашей конфигурации вы можете, например, положиться на эти переменные:

@Component
@ConfigurationProperties("prop.responseConfig.default")
public class Config{

@Value("${prop.responseConfig.ios}")
private boolean isIos;

@Value("${ios.actionSwitch.target}")
private String iosActionLinkTarget;

@Value("${android.actionSwitch.method}")
private String androidActionSwitchMethod;

private ActionSwitch actionSwitch;
private ActionLink actionLink;


public ActionLink getActionLink(){
 if(isIos){
   actionLink.setTarget(iosActionLinkTarget);
 }
return this.actionSwitch;
}

public ActionSwitch getActionSwitch(){
 if(!isIos){
   actionSwitch.setMethod(androidActionSwitchMethod);
 }
return this.actionSwitch;
}




@Getter
@Setter
public static ActionSwitch{
  private String target;
  private String method;
  private String errorResponse;
}

@Getter
@Setter
public static ActionLink{
  private String target;
  private Data data; 
}

@Getter
@Setter
public static Data{
 private String EXTRA_UUID;
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...