SpringBoot項目啟動時如何讀取配置以及初始化資源
介紹
在開發(fā)過程中,我們有時候會遇到非接口調(diào)用而出發(fā)程序執(zhí)行任務的一些場景,比如我們使用quartz定時框架通過配置文件來啟動定時任務時,或者一些初始化資源場景等觸發(fā)的任務執(zhí)行場景。
方法一:注解
方案
通過使用注解@Configuration和@Bean來初始化資源,配置文件當然還是通過@Value進行注入。
- @Configuration:用于定義配置類,可替換xml配置文件,被注解的類內(nèi)部一般是包含了一個或者多個@Bean注解的方法。
- @Bean:產(chǎn)生一個Bean對象,然后將Bean對象交給Spring管理,被注解的方法是會被AnnotationConfigApplicationContext或者AnnotationConfgWebApplicationContext掃描,用于構建bean定義,從而初始化Spring容器。產(chǎn)生這個對象的方法Spring只會調(diào)用一次,之后Spring就會將這個Bean對象放入自己的Ioc容器中。
補充@Configuration加載Spring:
- @Configuration配置spring并啟動spring容器
- @Configuration啟動容器+@Bean注冊Bean
- @Configuration啟動容器+@Component注冊Bean
- 使用 AnnotationConfigApplicationContext 注冊 AppContext 類的兩種方法
- 配置Web應用程序(web.xml中配置AnnotationConfigApplicationContext)
示例
package com.example.andya.demo.conf; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author andya * @create 2020-06-24 14:37 */ @Configuration public class InitConfigTest { @Value("${key}") private String key; @Bean public String testInit(){ System.out.println("init key: " + key); return key; } }
方法二:CommandLineRunner
方案
實現(xiàn)CommandLineRunner接口,該接口中的Component會在所有Spring的Beans都初始化之后,在SpringApplication的run()之前執(zhí)行。
多個類需要有順序的初始化資源時,我們還可以通過類注解@Order(n)進行優(yōu)先級控制
示例
package com.example.andya.demo.service; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; /** * @author andya * @create 2020-06-24 14:47 */ @Component public class CommandLineRunnerTest implements CommandLineRunner { @Value("${key}") private String key; @Override public void run(String... strings) throws Exception { System.out.println("command line runner, init key: " + key); } }
兩個示例的運行結果
總結
到此這篇關于SpringBoot項目啟動時如何讀取配置以及初始化資源的文章就介紹到這了,更多相關SpringBoot啟動時讀取配置及初始化資源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Springboot初始化啟動報錯Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource
- SpringBoot實現(xiàn)第一次啟動時自動初始化數(shù)據(jù)庫的方法
- SpringBoot啟動并初始化執(zhí)行sql腳本問題
- springboot中項目啟動時實現(xiàn)初始化方法加載參數(shù)
- springboot使用CommandLineRunner解決項目啟動時初始化資源的操作
- springboot 啟動時初始化數(shù)據(jù)庫的步驟
- 詳解SpringBoot程序啟動時執(zhí)行初始化代碼
- springboot組件初始化后的4種啟動方式及常用方法
相關文章
SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗及參數(shù)自定義注解校驗詳解
這篇文章主要給大家介紹了關于SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗及參數(shù)自定義注解校驗的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03java實現(xiàn)多線程的兩種方式繼承Thread類和實現(xiàn)Runnable接口的方法
下面小編就為大家?guī)硪黄猨ava實現(xiàn)多線程的兩種方式繼承Thread類和實現(xiàn)Runnable接口的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09Spring?Security自定義登錄頁面認證過程常用配置
這篇文章主要為大家介紹了Spring?Security自定義登錄頁面認證過程常用配置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08Java下載遠程服務器文件到本地(基于http協(xié)議和ssh2協(xié)議)
這篇文章主要介紹了Java下載遠程服務器文件到本地的方法(基于http協(xié)議和ssh2協(xié)議),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01深入分析@Resource和@Autowired注解區(qū)別
這篇文章主要為大家介紹了深入分析@Resource和@Autowired注解區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04