Was ist der einfachste Weg, das Präfix und Suffix für den Eigenschaftsplatzhalter im Spring Boot zu ändern?
Der Standardwert ist @Value("${some.property}")
, jedoch sieht dies in Kotlin hässlich aus, da es maskiert werden muss - $ {something} ist eine Sprachfunktion in Kotlin für String-Vorlagen.
Sie können das Präfix anpassen, indem Sie die folgenden Beans in Ihrer Konfiguration deklarieren:
%Vor% Wenn Sie einen vorhandenen Code haben (wie Spring Boot-Aktuatoren oder @LocalServerPort
), der die ${...}
-Syntax verwendet, sollten Sie Folgendes deklarieren:
Das Entkommen des Dollars wie in @Value("${some.property}")
ist eine weitere mögliche Option, die keine @Bean
Deklaration benötigt.
Für Spring-Boot-Tests, die mit @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
konfiguriert wurden, können Sie @LocalServerPort
anstelle von @Value("${local.server.port}")
verwenden.
@ConfigurationProperties
wäre eine bessere Alternative, insbesondere mit Kotlin-Datenklassen, aber momentan müssen Sie Kotlin-Klassen mit nullierbaren var
-Eigenschaften verwenden, da nur Getter / Setter unterstützt werden. Sie können für dieses Problem oder einen Kommentar abstimmen, um Ihr Interesse an der Unterstützung von Spring Boot 2 zu bekunden .x.
Wenn ich den Ratschlag aus der Antwort von dox benutzte, endete ich mit etwas wie:
%Vor% Im Frühjahr müssen @ConfigurationProperties
Objekte dem Java Beans Muster folgen und daher veränderbar sein. Für mich scheint die Konfiguration so zu sein, als ob sie während des ganzen Lebenszyklus der App generell statisch sein sollte, und anstatt die Komplexität der Argumentation über den Zustand hinzuzufügen, injizierte sie stattdessen die unveränderliche Schnittstelle.
Tags und Links java spring kotlin spring-boot