Ich habe die folgenden Feder-Komponente. Ich möchte einen eleganteren Weg finden, den Konfigurationswert zu injizieren.@ Valute Kraft Start Validierung
@Component
public class Clazz {
@Value("${config.value.foo:#{null}}")
public String foo;
@PostConstruct
public validateFoo() throws ConfigException {
if (foo == null || "".equals(foo)) {
throw new ConfigException("Please provide config");
}
}
}
Ich benutze YAML-Konfigurationen. Wenn ich nicht #{null}
hinzufüge, wird der Konfigurationsname (config.value.foo
) in String
eingegeben. Außerdem möchte ich, dass die Spring-Boot-App nicht startet, wenn die Konfiguration leer oder leer ist.
Gibt es eine weitere Anmerkung, die den Wert von config injiziert und eine Ausnahme auslöst, wenn der Wert nicht konfiguriert oder null ist?
Edit:
Wie in den Kommentaren angegeben @Value
Standardverhalten Ausnahme auf fehlende Konfiguration zu werfen ist. Ich habe das getestet und an einem neuen Projekt mit derselben Konfiguration funktioniert es. Wenn ich den Konfigurationswert entferne, bekomme ich: java.lang.IllegalArgumentException: Could not resolve placeholder
Ich nehme an, dass ich wegen einer Bibliothek, die ich importierte, keine Ausnahme bekomme.
Das ist bereits das Standardverhalten, wenn ein '@ Value' kann nicht aufgelöst werden, wird es explodieren. Wenn dies nicht der Fall ist, ist in Ihrem Setup etwas falsch konfiguriert. –
@ M.Deinum wirft es keine Ausnahme. Ich benutze Spring Boot und Yaml Configs. Es injiziert nur den Konfigurationsnamen – user1121883
Dann machst du etwas seltsam in deiner Konfiguration etwas brach das Standardverhalten. –