亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Spring Boot 外部化配置?

如何使用 Spring Boot 外部化配置?

大話西游666 2023-05-24 14:56:19
它只是不工作。我有? ? MailTrainAPI mt = new MailTrainAPI();? ? mt.sendMail(map);...@Componentpublic class MailTrainAPI {? ? @Value("${mailtrain.url}")? ? private String API;? ? public void sendMail(MultiValueMap<String, String> map) {? ? ? ? System.out.println("API = "+API);? ? ? ? API = System.getProperty("mailtrain.api");? ? ? ? System.out.println("API = "+API);? ? ? ? API = System.getenv("mailtrain.api");? ? ? ? System.out.println("API = "+API);src/main/resources/application.propertiesmailtrain.url=http://mail.galaxy.store/api/send/galaxybadge它打印API = nullAPI = nullAPI = null它不起作用,因為我自己實例化了這個類,而 Spring 不知道它。如何application.properties手動訪問文件中的屬性?彈簧引導 1.5.21
查看完整描述

2 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

MailTrainAPI應該是一個 Spring bean,又名組件,由于 自動掃描@Component,然后注入@Value("${mailtrain.url}").

但是,當您調用 時,您自己創建了一個單獨的類實例new MailTrainAPI()。不要那樣做。

您使用該對象的代碼必須通過注入字段來接收它,例如

@Autowired
private MailTrainAPI mt;


查看完整回答
反對 回復 2023-05-24
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

我能夠修復它


public void sendMail(MultiValueMap<String, String> map) {

    try {

        setAPI();

    } catch (IOException e) {

        Logger.error(this.getClass(), "sendMail()", "Cannot send mail. Cannot load mailtrain.url property: " + e.getMessage());

        return;

    }

    if (API == null) {

        Logger.error(this.getClass(), "sendMail()", "Cannot send mail. Cannot load mailtrain.url property.");

        return;

    }

    System.out.println("API = "+API);

    ...


private void setAPI() throws IOException {

    InputStream is = this.getClass().getResourceAsStream("/application.properties");

    Properties p = new Properties();

    p.load(is);

    API = p.getProperty("mailtrain.url");

}

但我認為會有一種更簡單、更好的方法,而且絨毛更少。


查看完整回答
反對 回復 2023-05-24
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號