SpringBoot項(xiàng)目啟動時(shí)如何讀取配置以及初始化資源
介紹
在開發(fā)過程中,我們有時(shí)候會遇到非接口調(diào)用而出發(fā)程序執(zhí)行任務(wù)的一些場景,比如我們使用quartz定時(shí)框架通過配置文件來啟動定時(shí)任務(wù)時(shí),或者一些初始化資源場景等觸發(fā)的任務(wù)執(zhí)行場景。
方法一:注解
方案
通過使用注解@Configuration和@Bean來初始化資源,配置文件當(dāng)然還是通過@Value進(jìn)行注入。
- @Configuration:用于定義配置類,可替換xml配置文件,被注解的類內(nèi)部一般是包含了一個(gè)或者多個(gè)@Bean注解的方法。
- @Bean:產(chǎn)生一個(gè)Bean對象,然后將Bean對象交給Spring管理,被注解的方法是會被AnnotationConfigApplicationContext或者AnnotationConfgWebApplicationContext掃描,用于構(gòu)建bean定義,從而初始化Spring容器。產(chǎn)生這個(gè)對象的方法Spring只會調(diào)用一次,之后Spring就會將這個(gè)Bean對象放入自己的Ioc容器中。
補(bǔ)充@Configuration加載Spring:
- @Configuration配置spring并啟動spring容器
- @Configuration啟動容器+@Bean注冊Bean
- @Configuration啟動容器+@Component注冊Bean
- 使用 AnnotationConfigApplicationContext 注冊 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會在所有Spring的Beans都初始化之后,在SpringApplication的run()之前執(zhí)行。
多個(gè)類需要有順序的初始化資源時(shí),我們還可以通過類注解@Order(n)進(jì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);
}
}
兩個(gè)示例的運(yùn)行結(jié)果

總結(jié)
到此這篇關(guān)于SpringBoot項(xiàng)目啟動時(shí)如何讀取配置以及初始化資源的文章就介紹到這了,更多相關(guān)SpringBoot啟動時(shí)讀取配置及初始化資源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot初始化啟動報(bào)錯Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource
- SpringBoot實(shí)現(xiàn)第一次啟動時(shí)自動初始化數(shù)據(jù)庫的方法
- SpringBoot啟動并初始化執(zhí)行sql腳本問題
- springboot中項(xiàng)目啟動時(shí)實(shí)現(xiàn)初始化方法加載參數(shù)
- springboot使用CommandLineRunner解決項(xiàng)目啟動時(shí)初始化資源的操作
- springboot 啟動時(shí)初始化數(shù)據(jù)庫的步驟
- 詳解SpringBoot程序啟動時(shí)執(zhí)行初始化代碼
- springboot組件初始化后的4種啟動方式及常用方法
相關(guān)文章
SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
springmvc 分頁查詢的簡單實(shí)現(xiàn)示例代碼
我們在開發(fā)項(xiàng)目中很多項(xiàng)目都用到列表分頁功能,本篇介紹了springmvc 分頁查詢的簡單實(shí)現(xiàn)示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-01-01
java實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法
下面小編就為大家?guī)硪黄猨ava實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
Java設(shè)計(jì)模式編程中的工廠方法模式和抽象工廠模式
這篇文章主要介紹了Java設(shè)計(jì)模式編程中的工廠方法模式和抽象工廠模式,設(shè)計(jì)模式的建立有利于團(tuán)隊(duì)協(xié)作時(shí)代碼的共同維護(hù),需要的朋友可以參考下2016-01-01
Spring?Security自定義登錄頁面認(rèn)證過程常用配置
這篇文章主要為大家介紹了Spring?Security自定義登錄頁面認(rèn)證過程常用配置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Java下載遠(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

