Ich habe ein Spring-Boot-Projekt und muss aufgrund von Profilen Werte aus der Datei application.properties abrufen.

Beim Einfügen einer Konfigurationsdatei in die Klasse gibt das Objekt jedoch null zurück.

Anwendungseigenschaften:

server.ip=000.000.000.000
server.port=0000

Konfigurationsklasse:

@Component
@ConfigurationProperties(prefix = "server")
public class AppProperties {

    private String ip;
    private Integer port;

... getters and setters

Die Klasse, in der ich die Werte brauche:

@Component
public class Teste {

    @Autowired
    private AppProperties properties;

...
socket = new Socket(properties.getIp(), properties.getPort());

Beim Debuggen erhalten die Werte in AppProperties zu Beginn der Anwendung einen korrekten Wert.

0
RafaelE 19 Jän. 2019 im 14:55

3 Antworten

Beste Antwort

Ich erhalte Nullwerte für Eigenschaften, weil ich eine Teste-Klasse mit new Teste(). instanziiere.

Die Lösung ist die Verwendung der Testklasse mit Infektion.

@Autowired
private Teste teste;
-1
RafaelE 21 Jän. 2019 im 23:20

Mit der Annotation @Value können Sie wie folgt auf die Eigenschaftswerte aus der Datei application.properties zugreifen

@Value("${<propertname>}")
private String userBucketPath;
1
venkat 19 Jän. 2019 im 12:31

Ihr Code sieht korrekt aus, aber ich möchte vorschlagen, dass Sie es auch mit den folgenden Schritten versuchen:

  1. Verwenden Sie die Annotation @PropertySource, um den Speicherort der Eigenschaften zu definieren. (Ich wusste, dass der Standardspeicherort Klassenpfad ist).

  2. Wenn Sie Ihrem Projekt wirklich ein Profil hinzufügen müssen. Erstellen Sie eine neue Anwendungseigenschaftendatei wie application- {Profilname} .properties und übergeben Sie beim Starten einer Anwendung das JVM-Argument -Dspring.profiles.active = {Profilname} .

Ich weiß nicht, ob es genau nötig oder eine Antwort für Sie ist. Ich versuche nur, einen zusätzlichen Schritt zu teilen.

0
Ompratap Singh 19 Jän. 2019 im 12:20