我目前在學習如何使用Spring Boot。到目前爲止,我從來沒有像Spring一樣使用框架,並直接使用文件(FileInputStream等)。如何使用Spring Boot加載外部配置?
因此,情況如下:我有一些動態配置值,如OAuth令牌。我想在我的應用程序中使用它們,但我不知道如何通過Spring實現這一點。
下面是一些代碼來明確一下我在尋找:
@Config("app.yaml")
public class Test {
@Value("app.token")
private String token;
private IClient client;
public Test(String token) {
this.client = ClientFactory.build(token).login();
}
}
當然,這個例子是非常簡單的。在這裏我想從YAML配置文件中動態獲取值「token」。該文件必須可供用戶訪問,並且不包含在JAR文件中。
我還發現該文檔:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html但我現在已經知道如何將其應用於我的項目。
我該如何實現這一目標?預先感謝您:)
編輯:
這裏是我的代碼的某些部分:
WatchdogBootstrap.java
package de.onkelmorph.watchdog;
import org.springframework.boot.Banner.Mode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@ImportResource("classpath:Beans.xml")
public class WatchdogBootstrap {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(WatchdogBeans.class);
app.setBannerMode(Mode.OFF);
app.setWebEnvironment(false);
app.run(args);
}
}
的beans.xml(位於默認包)
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config></context:annotation-config>
</beans>
Watchdog.java
package de.onkelmorph.watchdog;
// Imports ...
@Component
@PropertySource("file:/watchdog.yml")
public class Watchdog {
// ...
// Configuration
@Value("${watchdog.token}")
private String token;
public Watchdog() {
System.out.println(this.token);
System.exit(0);
}
// ...
}
watchdog.yml(放在src /主/資源)
watchdog:
token: fghaepoghaporghaerg
我並不想成爲粗魯,但你閱讀文件?有什麼需要幫助的嗎?通常情況下,如果你想加載一個外部配置文件,你可以使用像'java -jar myproject.jar --spring.config.name = myproject'這樣的東西,我很樂意提供幫助,但我需要知道你需要幫助的部分用。在你所說的文獻中,一切都很好解釋清楚。 – kkflf
嗨kkflf,謝謝你的回覆!當然,我閱讀文檔,但我認爲我沒有得到他們......有沒有一種方法來加載配置沒有額外的虛擬機參數?謝謝! – Morph
當然,這是可能的。你應該看看'@ PropertySource'。此註釋將允許您加載內部和外部配置文件。如果你的項目跨越多個開發環境,你應該看看分析或使用虛擬機參數,但不要關注這個,直到你得到配置文件的工作。請記住如何使您的應用程序配置適合多種工作環境。 – kkflf