最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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)鍵步驟——配置類,自動(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)工具類里

需要注意的是下邊的兩個(gè)方法都需要工具類創(chuàng)建實(shí)例的時(shí)候才會(huì)注入。所以不建議在工具類注入實(shí)例。因?yàn)橐话愎ぞ哳惗际侵苯油ㄟ^(guò)類來(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)文章

  • Java如何獲得泛型類中的泛型類型T.class

    Java如何獲得泛型類中的泛型類型T.class

    獲取泛型符號(hào)E的Class對(duì)象的方法,1.反射方案利用匿名子類實(shí)例化,但該方法有特殊限制,2.反射方案2直接指定泛型類型,但不靈活,3.構(gòu)造方法方案在初始化時(shí)傳入泛型類,但有寫(xiě)錯(cuò)風(fēng)險(xiǎn)
    2024-12-12
  • Java中Scanner類使用保姆級(jí)教程

    Java中Scanner類使用保姆級(jí)教程

    JavaSE在java.util類庫(kù)中提供了一個(gè)專門(mén)用于輸入操作的類Scanner類,可以使用該類創(chuàng)建一個(gè)對(duì)象,然后利用該對(duì)象的相關(guān)方法從鍵盤(pán)上讀取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java中Scanner類使用的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • elasticsearch數(shù)據(jù)信息索引操作action?support示例分析

    elasticsearch數(shù)據(jù)信息索引操作action?support示例分析

    這篇文章主要為大家介紹了elasticsearch數(shù)據(jù)信息索引操作action?support示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Java解析json報(bào)文實(shí)例解析

    Java解析json報(bào)文實(shí)例解析

    這篇文章主要介紹了Java解析json報(bào)文實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好你知道嗎

    Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Java?Runnable和Thread實(shí)現(xiàn)多線程哪個(gè)更好,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2022-03-03
  • 使用synchronized關(guān)鍵字實(shí)現(xiàn)信號(hào)量的方法

    使用synchronized關(guān)鍵字實(shí)現(xiàn)信號(hào)量的方法

    在Java中,信號(hào)量(Semaphore)是一種常用的同步工具,它可以用來(lái)控制對(duì)共享資源的訪問(wèn)數(shù)量,下面,我們將使用Synchronized關(guān)鍵字來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的信號(hào)量,我們的目標(biāo)是實(shí)現(xiàn)一個(gè)計(jì)數(shù)信號(hào)量,其中信號(hào)量的計(jì)數(shù)指示可以同時(shí)訪問(wèn)某一資源的線程數(shù),需要的朋友可以參考下
    2024-04-04
  • 基于Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)同步組件

    基于Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)同步組件

    這篇文章主要為大家詳細(xì)介紹了如何基于Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)同步組件,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • spring boot整合redis主從sentinel方式

    spring boot整合redis主從sentinel方式

    這篇文章主要介紹了spring boot整合redis主從sentinel方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 基于java中集合的概念(詳解)

    基于java中集合的概念(詳解)

    下面小編就為大家?guī)?lái)一篇基于java中集合的概念(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java?RabbitMQ消息隊(duì)列詳解常見(jiàn)問(wèn)題

    Java?RabbitMQ消息隊(duì)列詳解常見(jiàn)問(wèn)題

    消息隊(duì)列是最古老的中間件之一,從系統(tǒng)之間有通信需求開(kāi)始,就自然產(chǎn)生了消息隊(duì)列。本文告訴什么是消息隊(duì)列,為什么需要消息隊(duì)列,常見(jiàn)的消息隊(duì)列有哪些,RabbitMQ的部署和使用
    2022-07-07

最新評(píng)論

大港区| 潜江市| 信宜市| 丰镇市| 五大连池市| 石渠县| 泽普县| 禄劝| 中卫市| 翼城县| 黔南| 油尖旺区| 探索| 仁寿县| 衡南县| 辽源市| 教育| 和政县| 察隅县| 察雅县| 社旗县| 开原市| 盐源县| 濮阳市| 阳原县| 大理市| 宁津县| 伽师县| 无为县| 崇文区| 石泉县| 金堂县| 柳河县| 洞口县| 同心县| 靖江市| 綦江县| 景宁| 蓝山县| 广河县| 唐山市|