Heim > Java > javaLernprogramm > @Value von SpringBoot führt dazu, dass die application.properties-Konfiguration ungültig wird. So lösen Sie das Problem

@Value von SpringBoot führt dazu, dass die application.properties-Konfiguration ungültig wird. So lösen Sie das Problem

WBOY
Freigeben: 2023-05-16 11:52:05
nach vorne
1559 Leute haben es durchsucht

@Value erhält das Problem der Ungültigkeit der application.properties-Konfiguration

Der Grund für die Ungültigkeit liegt hauptsächlich darin, die Vorsichtsmaßnahmen für die Verwendung von @Value zu beachten:

  • 1 Es kann nicht für statische Variablen (statisch) verwendet werden.

  • 2. Es kann nicht auf Konstanten angewendet werden (endgültig);

  • 3 Kann nicht in nicht registrierten Klassen verwendet werden (Verwendung von @Component, @Configuration usw.);

  • 4 Wenn Sie eine Klasse mit diesem Attribut verwenden, können Sie nur die @ Autowired-Methode verwenden, und die neue Methode fügt diese Konfigurationen nicht automatisch ein.

Diese Vorsichtsmaßnahmen werden auch durch ihr Prinzip bestimmt:

Während des Springboot-Startvorgangs gibt es zwei wichtige Prozesse:

  • 1. Scannen und analysieren Sie die Bohnen im Container und registrieren Sie sie im beanFactory Nach oben zu gehen ist wie das Registrieren von Informationen.

  • 2. Instanziieren und initialisieren Sie diese gescannten Beans.

@Value wird in der zweiten Stufe analysiert. BeanPostProcessor definiert die Schnittstellenmethode, die Benutzer vor und nach der Bean-Initialisierung auf die Bean anwenden können. Eine ihrer wichtigen Implementierungsklassen, AutowiredAnnotationBeanPostProcessor, bietet, wie im Javadoc heißt, Unterstützung für die Injektionsfunktion von @Autowired- und @Value-Annotationen in der Bean.

Es gibt zwei Möglichkeiten:

resource.test.imageServer=http://image.everest.com
Nach dem Login kopieren

1. Der erste

@Configuration
public class EverestConfig {
 
    @Value("${resource.test.imageServer}")
    private String imageServer;
 
    public String getImageServer() {
        return imageServer;
    }
 
}
Nach dem Login kopieren

Dann fügen Sie ihn dort ein, wo er benötigt wird

@Component
@ConfigurationProperties(prefix = "resource.test")
public class TestUtil {
 
    public String imageServer;
 
    public String getImageServer() {
        return imageServer;
    }
 
    public void setImageServer(String imageServer) {
        this.imageServer = imageServer;
    }
}
Nach dem Login kopieren

@Value, um die Konfiguration in application.properties zu erhalten Null

    @Autowired
    private TestUtil testUtil;
 
    @Autowired
    private EverestConfig everestConfig;
 
 
    @GetMapping("getImageServer")
    public String getImageServer() {
        return testUtil.getImageServer();
//        return everestConfig.getImageServer();
    }
Nach dem Login kopieren

Der Wert ist NULL.

Lösung

Verwenden Sie nicht die neue Methode zum Erstellen von Werkzeugklassenobjekten (DBUtils), sondern verwenden Sie die von Springboot verwaltete @Autowired-Methode. Fügen Sie @Component zur Werkzeugklasse hinzu und fügen Sie dem definierten Attribut keine statischen Elemente hinzu Variablen.

Richtiger Weg

@Value("${spring.datasource.url}")

private String url;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt von@Value von SpringBoot führt dazu, dass die application.properties-Konfiguration ungültig wird. So lösen Sie das Problem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage