論@Value與Environment之優劣

1 · Hoxton · March 24, 2023, 2:47 a.m.
SpringBoot中想要從Application.properties中取的值,有兩種常見的方式,其中一種是利用@Value的方式 @Value 1 2 @Value("${app.version}) String version Enviroment 另一種則是透過 Enviroment物件來取的 1 2 3 4 5 private final Environment env; public String getAppVersion() { return environment.getProperty("app.version"); } 結論 這兩個表現形式幾乎一模一樣,都可以取得想要的部分,但最大差別就在單元測試時,由於@Value這個取值方式有賴將整個SpringBoot專案啟動才可以注入,在單元測試的環境下並沒有辦法做到這件事情。但相反的,由於Environment本身屬於一個外部依賴,我們可以很好的替代掉他 1 2 3 4 5 6 7 8 9 10 11 12 13 @Service public class Versio...