Как получить значение конфигурации для статического значения в Quarkus

Я переписываю исключения из старой системы, и все работало, но мне нужно было сделать BAD_REQUEST настраиваемым.

private static final String BAD_REQUEST = "BDRQ";

Пытался просто поставить ConfigProperty, но не работает.

import javax.ws.rs.core.Response.Status;
import org.eclipse.microprofile.config.inject.ConfigProperty;

public class SXClientException extends RuntimeException {
  @ConfigProperty(name = "greeting.error", defaultValue = "BDRQ")
  public String BAD_REQUEST;

  private final RuntimeException runtimeException;

  public SXClientException(RuntimeException e) {
    super(e);

    this.runtimeException = e;
  }

  public Status getStatus() {
    if (BAD_REQUEST.equals(runtimeException.getMessage())) {
      return Status.BAD_REQUEST;
    }
    return Status.INTERNAL_SERVER_ERROR;
  }

  // ...
}

Вероятно, это не сработает, так как я делаю их без CDI.

catch (LegacyOMException e) {
    throw new SXClientException(e);
}

Я бы предпочел избежать создания другого bean-компонента (и передачи значения) только для сравнения одной String. Любая идея, как я могу прочитать значение конфигурации для статического значения?


person pr0gramist    schedule 06.12.2019    source источник


Ответы (2)


вы можете использовать org.eclipse.microprofile.config.ConfigProvider. Работает как для статических, так и для нестатических членов.

public static final String BAD_REQUEST = ConfigProvider.getConfig().getValue("greeting.error",String.class);

public final String BAD_REQUEST = ConfigProvider.getConfig().getValue("greeting.error",String.class);
person arijit nandi    schedule 05.04.2021

используйте следующий метод:

Properties properties = new Properties();  
InputStream inputStream = this.getClass().getResourceAsStream("/menu.properties");  
properties.load(inputStream );  
System.out.println(properties.getProperty("a"));
person Benson    schedule 06.12.2019
comment
Я думал об этом, но это хуже, чем передавать значение извне. Так много проблем с вводом-выводом и общей масштабируемостью - person pr0gramist; 06.12.2019
comment
хорошо, но вы хотите прочитать файл конфигурации и не использовать Spring bean, может быть и не другими способами - person Benson; 06.12.2019