Ich habe Spring Boot Client, der eine erholsame API verbraucht. Gibt es einen Schlüsseleintrag in der application.properties, den ich verwenden kann, anstatt die IP-Adresse der REST= API in der Java= Klasse fest zu codieren?
Und wenn nicht, kann ich einen benutzerdefinierten Eintrag erstellen?
Vielen Dank
Die von Spring Boot verwendete Infrastruktur kann auf die gleiche Weise in Ihrem eigenen Projekt verwendet werden. Sie haben in der Antwort von @zmitrok eine Warnung zu "unbekannten Eigenschaften" abgegeben. Das liegt daran, dass Ihre Eigenschaft keine Metadaten enthält, sodass die IDE nichts davon weiß.
Ich würde Ihnen dringend raten , @Value
Nicht zu verwenden , da dies im Vergleich zu den Angeboten von Spring Boot (@Value
Ist eine Spring Framework-Funktion.
Erstellen Sie zunächst ein POJO für Ihre IP:
@ConfigurationProperties("app.foo")
public class FooProperties {
/**
* IP of foo service used to blah.
*/
private String ip = 127.0.0.1;
// getter & setter
}
Dann haben Sie zwei Möglichkeiten
@Component
In FooProperties
ein und aktivieren Sie die Verarbeitung von Konfigurationseigenschaften, indem Sie @EnableConfigurationProperties
Für eine Ihrer Klassen @Configuration
Hinzufügen (dieser letzte Schritt ist ab nicht mehr erforderlich) Spring Boot 1.3.0.M3
)FooProperties
unverändert und fügen Sie @EnableConfigurationProperties(FooProperties.class)
zu einer Ihrer Klassen @Configuration
Hinzu, wodurch automatisch ein Spring Bean für Sie erstellt wird.Sobald Sie dies getan haben, können Sie app.foo.ip
In application.properties
Und @Autowired
FooProperties
in Ihrem Code verwenden, um nach dem Wert der Eigenschaft zu suchen
@Component
public MyRestClient {
private final FooProperties fooProperties;
@Autowired
public MyRestClient(FooProperties fooProperties) { ... }
public callFoo() {
String ip = this.fooProperties.getIp();
...
}
}
Okay, Ihr Schlüssel ist in Ihrer IDE immer noch gelb. Der letzte Schritt ist fügen Sie eine zusätzliche Abhängigkeit hinzu, die Ihren Code anzeigt und die relevanten Metadaten zum Zeitpunkt der Erstellung generiert . Fügen Sie Ihrer pom.xml Folgendes hinzu
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
Und voilà, Ihr Schlüssel wird erkannt, Sie haben javadoc und die IDE gibt Ihnen den Standardwert (den Wert, den Sie auf dem Feld initialisiert haben). Sobald Sie das haben, können Sie die Konvertierung beliebig eingeben Service-Handles (dh URL
) und das Javadoc auf dem Feld werden verwendet, um die Dokumentation für Ihre Schlüssel zu generieren.
Sie können Ihrem Feld auch eine beliebige JSR-303
- Einschränkungsvalidierung hinzufügen (z. B. einen regulären Ausdruck, um zu überprüfen, ob es sich um eine gültige IP-Adresse handelt).
Überprüfen Sie dieses Beispielprojekt und die Dokumentation für weitere Details.
Anstatt die IP-Adresse fest in die Eigenschaftendatei zu codieren, können Sie die Anwendung mit starten
-Dmy.property=127.127.10.20
Und Spring Boot nimmt es automatisch mit
@Value("${my.property}")
private String myProperty;
Sie können den application.properties Ihre eigenen Einträge hinzufügen. Stellen Sie lediglich sicher, dass der Eigenschaftsname nicht mit den unter http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties aufgeführten allgemeinen Eigenschaften in Konflikt steht =