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

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

如果未提供標志,如何關閉/不啟動 Spring 應用程序?

如果未提供標志,如何關閉/不啟動 Spring 應用程序?

眼眸繁星 2023-07-19 16:41:35
我使用注入一個標志@Value("${FOO}"),如果沒有提供(即FOO是一個強制標志),我根本不希望我的 spring 應用程序啟動。這是我的主要課程:@SpringBootApplicationpublic class Application {  public static void main(String[] args) {    SpringApplication.run(Application.class, args);  }}我注入FOO其中一項服務。我該怎么做?
查看完整描述

3 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

屬性占位符的解析由PlaceholderConfigurerSupport控制。默認情況下,如果無法解析占位符,它應該拋出異常:

如果配置器無法解析占位符,則會拋出BeanDefinitionStoreException 。

@Value但是,當我嘗試將 a與不存在的屬性一起使用時,它拋出了異常,但并沒有停止 JVM。

要強制其停止,您可以執行InitializingBean并檢查方法中的屬性afterPropertiesSet()

@Service

public class YourService implements InitializingBean {


? ? @Value("${foo:#{null}}") // set the default value to null

? ? private String foo;


? ? public void afterPropertiesSet() {

? ? ? ? if (foo == null) {

? ? ? ? ? ? throw new IllegalArgumentException("foo flag must be provided");

? ? ? ? }

? ? }

}


查看完整回答
反對 回復 2023-07-19
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

如果你想注入 Foo 你需要啟動你的應用程序。這可能不是正確的方法,但它會起作用。你能做的就是創建一個像這樣的bean。在 bean 中,您可以添加自己的條件來關閉應用程序。這將阻止創建 bean 時應用程序的啟動。


@SpringBootApplication

public class SampleApplication {


    @Value("${foo}")

    private String foo;


    @Bean

    public String preventStart() {

        if("no".equals(foo) ) {

            System.exit(0);

        }

        return "started";

    }


    public static void main(String[] args) {

        SpringApplication.run(SampleApplication.class, args);

    }

}


查看完整回答
反對 回復 2023-07-19
?
達令說

TA貢獻1821條經驗 獲得超6個贊

您可以使用 SpringBoot 運行程序在應用程序啟動之前執行此操作。

查看完整回答
反對 回復 2023-07-19
  • 3 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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