SpringBoot項(xiàng)目啟動(dòng)時(shí)如何讀取配置以及初始化資源
介紹
在開發(fā)過程中,我們有時(shí)候會(huì)遇到非接口調(diào)用而出發(fā)程序執(zhí)行任務(wù)的一些場(chǎng)景,比如我們使用quartz定時(shí)框架通過配置文件來啟動(dòng)定時(shí)任務(wù)時(shí),或者一些初始化資源場(chǎng)景等觸發(fā)的任務(wù)執(zhí)行場(chǎng)景。
方法一:注解
方案
通過使用注解@Configuration和@Bean來初始化資源,配置文件當(dāng)然還是通過@Value進(jìn)行注入。
- @Configuration:用于定義配置類,可替換xml配置文件,被注解的類內(nèi)部一般是包含了一個(gè)或者多個(gè)@Bean注解的方法。
- @Bean:產(chǎn)生一個(gè)Bean對(duì)象,然后將Bean對(duì)象交給Spring管理,被注解的方法是會(huì)被AnnotationConfigApplicationContext或者AnnotationConfgWebApplicationContext掃描,用于構(gòu)建bean定義,從而初始化Spring容器。產(chǎn)生這個(gè)對(duì)象的方法Spring只會(huì)調(diào)用一次,之后Spring就會(huì)將這個(gè)Bean對(duì)象放入自己的Ioc容器中。
補(bǔ)充@Configuration加載Spring:
- @Configuration配置spring并啟動(dòng)spring容器
- @Configuration啟動(dòng)容器+@Bean注冊(cè)Bean
- @Configuration啟動(dòng)容器+@Component注冊(cè)Bean
- 使用 AnnotationConfigApplicationContext 注冊(cè) AppContext 類的兩種方法
- 配置Web應(yīng)用程序(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
方案
實(shí)現(xiàn)CommandLineRunner接口,該接口中的Component會(huì)在所有Spring的Beans都初始化之后,在SpringApplication的run()之前執(zhí)行。
多個(gè)類需要有順序的初始化資源時(shí),我們還可以通過類注解@Order(n)進(jìn)行優(yōu)先級(jí)控制
示例
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); } }
兩個(gè)示例的運(yùn)行結(jié)果
總結(jié)
到此這篇關(guān)于SpringBoot項(xiàng)目啟動(dòng)時(shí)如何讀取配置以及初始化資源的文章就介紹到這了,更多相關(guān)SpringBoot啟動(dòng)時(shí)讀取配置及初始化資源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot初始化啟動(dòng)報(bào)錯(cuò)Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource
- SpringBoot實(shí)現(xiàn)第一次啟動(dòng)時(shí)自動(dòng)初始化數(shù)據(jù)庫(kù)的方法
- SpringBoot啟動(dòng)并初始化執(zhí)行sql腳本問題
- springboot中項(xiàng)目啟動(dòng)時(shí)實(shí)現(xiàn)初始化方法加載參數(shù)
- springboot使用CommandLineRunner解決項(xiàng)目啟動(dòng)時(shí)初始化資源的操作
- springboot 啟動(dòng)時(shí)初始化數(shù)據(jù)庫(kù)的步驟
- 詳解SpringBoot程序啟動(dòng)時(shí)執(zhí)行初始化代碼
- springboot組件初始化后的4種啟動(dòng)方式及常用方法
相關(guān)文章
SpringBoot常見get/post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見get/post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03springmvc 分頁查詢的簡(jiǎn)單實(shí)現(xiàn)示例代碼
我們?cè)陂_發(fā)項(xiàng)目中很多項(xiàng)目都用到列表分頁功能,本篇介紹了springmvc 分頁查詢的簡(jiǎn)單實(shí)現(xiàn)示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-01-01java實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法
下面小編就為大家?guī)硪黄猨ava實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09Java設(shè)計(jì)模式編程中的工廠方法模式和抽象工廠模式
這篇文章主要介紹了Java設(shè)計(jì)模式編程中的工廠方法模式和抽象工廠模式,設(shè)計(jì)模式的建立有利于團(tuán)隊(duì)協(xié)作時(shí)代碼的共同維護(hù),需要的朋友可以參考下2016-01-01Spring?Security自定義登錄頁面認(rèn)證過程常用配置
這篇文章主要為大家介紹了Spring?Security自定義登錄頁面認(rèn)證過程常用配置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Java下載遠(yuǎn)程服務(wù)器文件到本地(基于http協(xié)議和ssh2協(xié)議)
這篇文章主要介紹了Java下載遠(yuǎn)程服務(wù)器文件到本地的方法(基于http協(xié)議和ssh2協(xié)議),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01深入分析@Resource和@Autowired注解區(qū)別
這篇文章主要為大家介紹了深入分析@Resource和@Autowired注解區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04