1. 程式人生 > >【SpringBoot基礎系列-實戰】如何指定 bean 最先載入(應用篇)

【SpringBoot基礎系列-實戰】如何指定 bean 最先載入(應用篇)

![](https://spring.hhui.top/spring-blog/imgs/200317/logo.jpg) > [【基礎系列-實戰】如何指定 bean 最先載入(應用篇)](https://mp.weixin.qq.com/s?__biz=MzU3MTAzNTMzMQ==&mid=2247484553&idx=1&sn=f2d20abf3f3d409c53d0ee2675f7ab00) 在日常的業務開發中,絕大多數我們都是不關注 bean 的載入順序,然而如果在某些場景下,當我們希望某個 bean 優於其他的 bean 被例項化時,往往並沒有我們想象中的那麼簡單 ## I. 啟動類指定方式 在實際的 SpringBoot 開發中,我們知道都會有一個啟動類,如果希望某個類被優先載入,一個成本最低的簡單實現,就是在啟動類裡新增上依賴 ```java @SpringBootApplication public class Application { public Application(DemoBean demoBean) { demoBean.print(); } public static void main(String[] args) { SpringApplication.run(Application.class); } } ``` 請注意上面的構造方法,如果我們希望在應用啟動之前,`demoBean`就已經被載入了,那就讓 Application 強制依賴它,所以再 Application 的 bean 初始化之前,肯定會優先例項化`demoBean` 相信上面這種寫法,大家並不會陌生,特別是當我們應用啟動之後,發現某個依賴的 bean(一般來講是第三方庫提供的 bean)還沒有初始化導致 npe 時,用這種方法還是比較多的 **case1** 我們且不談這種實現方式是否優雅,當我們希望`targetBean`在所有的 bean 例項化之前被例項時,上面這種寫法是否一定會生效呢? **case2** 中介軟體同學:吭哧吭哧的開發了一個