欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Spring靜態(tài)注入實(shí)現(xiàn)讀取配置工具類(lèi)新方式

 更新時(shí)間:2022年02月14日 15:19:10   作者:帷幄庸者  
這篇文章主要介紹了使用Spring靜態(tài)注入實(shí)現(xiàn)讀取配置工具類(lèi)新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring靜態(tài)注入實(shí)現(xiàn)讀取配置工具類(lèi)

Spring靜態(tài)注入的核心首先是需要是一個(gè)Bean,才可以從Spring上下文中注入Bean,下例中environment是需要Autowired注入的Bean,之所以選擇Environment是因?yàn)樗蠸pring已經(jīng)加載好的屬性配置,直接拿來(lái)用比從文件中讀取更優(yōu)雅,從文件中讀取需要面臨jar包外部配置問(wèn)題,暫時(shí)未找到較好解決辦法。

@PostConstruct修飾的方法會(huì)在服務(wù)器加載Servlet的時(shí)候運(yùn)行,并且只會(huì)被服務(wù)器執(zhí)行一次。此處把PropertiesUtils被Spring實(shí)例化的Bean賦值給靜態(tài)變量tool,后續(xù)可以通過(guò)tool使用實(shí)例化好的PropertiesUtils的Bean。

getProperty作為根據(jù)key獲取指的靜態(tài)方法,實(shí)現(xiàn)獲取配置屬性。 

核心代碼

@Component
public class PropertiesUtils {
    private static PropertiesUtils tool;
    @Autowired
    private Environment environment;
    public static String getProperty(String property) {
        return tool.environment.getProperty(property);
    }
    @PostConstruct
    public void init() {
        tool = this;
        tool.environment = this.environment;
    }
}

實(shí)現(xiàn)Starter關(guān)鍵步驟——配置類(lèi),自動(dòng)配置PropertiesUtils的Bean

public class AutoConfig {
? ? @Bean
? ? private PropertiesUtils propertiesUtils() {
? ? ? ? return new PropertiesUtils();
? ? }
}

實(shí)現(xiàn)Starter關(guān)鍵步驟——在resources的創(chuàng)建META-INF文件夾,創(chuàng)建spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.AutoConfig

拓展

Environment :

  • Spring 為運(yùn)行環(huán)境提供的高度抽象接口,項(xiàng)目運(yùn)行中的所有相關(guān)配置都基于此接口,用來(lái)表示整個(gè)應(yīng)用運(yùn)行時(shí)的環(huán)境。
  • 該接口繼承自PropertyResolver,而PropertyResolver規(guī)范了解析底層任意property資源,也就意味著application.properties是由PropertyResolver管理。
  • PropertyResolver提供了方法getProperty(String key),該方法通過(guò)傳入properties文件中定義的key,返回與給定鍵關(guān)聯(lián)的屬性值。

Spring兩種方式注入到靜態(tài)工具類(lèi)里

需要注意的是下邊的兩個(gè)方法都需要工具類(lèi)創(chuàng)建實(shí)例的時(shí)候才會(huì)注入。所以不建議在工具類(lèi)注入實(shí)例。因?yàn)橐话愎ぞ哳?lèi)都是直接通過(guò)類(lèi)來(lái)使用的。

直接上代碼

方式1

//可以換成@Configuration,與@Inject配合使用
@Componentpublic?
class XXUtils {?
? ? ? ? //可以換成@Inject/ @Autowired
? ? ? ?@Resource
? private XXXProperties xxxPropertiesAutowired;??
? private static XXXProperties xxxProperties;??
? ? ? ?@PostConstruct?
? ? ? ?public void init() {
? ? ? ? ? ? ? this.xxxPropertiesAutowired = xxxProperties;
? ? ? ?}
}

方式2:zs

@Component
public class UrlUtil {
? ? ?private static RRJConfig rrjConfig;
? ? @Autowired
? ? public void setRRJConfig(RRJConfig rRJConfig) {
? ? UrlUtil.rrjConfig = rRJConfig;
? ? }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringData關(guān)鍵字查詢(xún)實(shí)現(xiàn)方法詳解

    SpringData關(guān)鍵字查詢(xún)實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了SpringData關(guān)鍵字查詢(xún)實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java接口私有方法實(shí)現(xiàn)過(guò)程解析

    java接口私有方法實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了java接口私有方法實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • MyBatis批量插入數(shù)據(jù)的三種方法實(shí)例

    MyBatis批量插入數(shù)據(jù)的三種方法實(shí)例

    由于項(xiàng)目需要生成多條數(shù)據(jù),并保存到數(shù)據(jù)庫(kù)當(dāng)中,項(xiàng)目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,應(yīng)該要比循環(huán)插入的效果更好,下面這篇文章主要給大家介紹了關(guān)于MyBatis批量插入數(shù)據(jù)的三種方法,需要的朋友可以參考下
    2021-10-10
  • jpa實(shí)現(xiàn)只查詢(xún)指定的字段

    jpa實(shí)現(xiàn)只查詢(xún)指定的字段

    這篇文章主要介紹了jpa實(shí)現(xiàn)只查詢(xún)指定的字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • RabbitMQ死信機(jī)制實(shí)現(xiàn)延遲隊(duì)列的實(shí)戰(zhàn)

    RabbitMQ死信機(jī)制實(shí)現(xiàn)延遲隊(duì)列的實(shí)戰(zhàn)

    本文主要介紹了RabbitMQ死信機(jī)制實(shí)現(xiàn)延遲隊(duì)列的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 淺談Java基準(zhǔn)性能測(cè)試之JMH

    淺談Java基準(zhǔn)性能測(cè)試之JMH

    JMH是Java Microbenchmark Harness的簡(jiǎn)稱(chēng),一個(gè)針對(duì)Java做基準(zhǔn)測(cè)試的工具。想準(zhǔn)確的對(duì)一段代碼做基準(zhǔn)性能測(cè)試并不容易,因?yàn)镴VM層面在編譯期、運(yùn)行時(shí)對(duì)代碼做很多優(yōu)化,當(dāng)代碼塊處于整個(gè)系統(tǒng)中運(yùn)行時(shí)并不一定會(huì)生效,產(chǎn)生錯(cuò)誤的基準(zhǔn)測(cè)試結(jié)果,這個(gè)問(wèn)題就是JMH要解決的
    2021-06-06
  • java實(shí)現(xiàn)微信點(diǎn)餐申請(qǐng)微信退款

    java實(shí)現(xiàn)微信點(diǎn)餐申請(qǐng)微信退款

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信點(diǎn)餐申請(qǐng)微信退款,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Java并發(fā)編程之ConcurrentLinkedQueue隊(duì)列詳情

    Java并發(fā)編程之ConcurrentLinkedQueue隊(duì)列詳情

    這篇文章主要介紹了Java并發(fā)編程之ConcurrentLinkedQueue隊(duì)列詳情,ConcurrentLinkedQueue?內(nèi)部的隊(duì)列使用單向鏈表方式實(shí)現(xiàn),下文更多相關(guān)內(nèi)容敘述需要的小伙伴可以參考一下
    2022-04-04
  • Spring Boot使用profile如何配置不同環(huán)境的配置文件

    Spring Boot使用profile如何配置不同環(huán)境的配置文件

    ,springboot支持通過(guò)不同的profile來(lái)配置不同環(huán)境的配置,下面就大致介紹一下yml配置文件跟properties配置文件怎么使用profile配置不同環(huán)境的配置文件
    2018-01-01
  • java使用Jsoup連接網(wǎng)站超時(shí)的解決方法

    java使用Jsoup連接網(wǎng)站超時(shí)的解決方法

    jsoup是一個(gè)非常好的解析網(wǎng)頁(yè)的包,用java開(kāi)發(fā)的,提供了類(lèi)似DOM,CSS選擇器的方式來(lái)查找和提取文檔中的內(nèi)容,提取文檔內(nèi)容時(shí)會(huì)出現(xiàn)超時(shí)的情況,解決方法可看下文
    2013-11-11

最新評(píng)論