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

Spring ApplicationContext接口功能詳細介紹

 更新時間:2023年02月06日 17:02:02   作者:tanglin_030907031026  
ApplicationContext是Spring應用程序中的中央接口,由于繼承了多個組件,使得ApplicationContext擁有了許多Spring的核心功能,如獲取bean組件,注冊監(jiān)聽事件,加載資源文件等

第一步,我們先來看這個接口的內(nèi)部結(jié)構,了解別人的內(nèi)部,知己知彼,百戰(zhàn)不殆:

這個接口的擴展功能主要體現(xiàn)在它繼承的四個接口上:

  • MessageSource:國際化功能
  • ResourcePatternResolver: 資源訪問功能
  • ApplicationEventPublisher: Spring事件發(fā)布者功能
  • EnvironmentCapable:提供當前系統(tǒng)環(huán)境 Environment 組件功能

國際化功能演示

查看對應的方法:

準備翻譯資源信息:

--------messages_en.properties

hi=Hello

--------messages_ja.properties

hi=こんにちは

---------messages_zh.properties

hi=你好

使用context容器對象,通過getMessage方法。根據(jù)key進行翻譯:

   //處理國際化資源(國際化能力)
       //中文(參數(shù):key,變化的信息,翻譯的類型)
        //根據(jù)key找到不同語言的翻譯結(jié)果
        System.out.println(context.getMessage("hi", null, Locale.CHINA));
      //英文
        System.out.println(context.getMessage("hi", null, Locale.ENGLISH));
        //日文
        System.out.println(context.getMessage("hi", null, Locale.JAPANESE));

資源訪問功能演示:

查看對應的方法:

第一個是根據(jù)路徑獲取多個資源,第二個是根據(jù)路徑獲取單個資源

//根據(jù)磁盤的路徑獲取單個資源
context.getResources("classpath:spring.properties");
//獲取多個資源
  Resource[] resources = context.getResources("classpath*:META-INF/spring.factories");
        for (Resource resource : resources) {
            System.out.println(resource);
        }

提供當前系統(tǒng)環(huán)境 Environment 組件功能演示:

       System.out.println(context.getEnvironment().getProperty("java_home"));
        System.out.println(context.getEnvironment().getProperty("server.port"));

作用:獲取配置信息

Spring事件發(fā)布者功能演示:

定義事件:

//用戶已注冊事件
public class UserRegisteredEvent extends ApplicationEvent {
   // source 事件的事件源  
  public UserRegisteredEvent(Object source) {
        super(source);
    }
}

發(fā)布事件:

context.publishEvent(new UserRegisteredEvent(context));

接收事件(監(jiān)聽器):

@Component
public class Component2 {
    private static final Logger log = LoggerFactory.getLogger(Component2.class);
    @EventListener
//發(fā)的是什么事件,就用什么事件來接收
    public void aaa(UserRegisteredEvent event) {
        log.debug("{}", event);
        log.debug("發(fā)送短信");
    }
}

實現(xiàn)用戶注冊與發(fā)送短信之間的解耦:

@Component
public class Component1 {
    private static final Logger log = LoggerFactory.getLogger(Component1.class);
    @Autowired
    private ApplicationEventPublisher context;
    public void register() {
        log.debug("用戶注冊");
        context.publishEvent(new UserRegisteredEvent(this));
    }
}

測試:

context.getBean(Component1.class).register();

重點:發(fā)布事件,使用監(jiān)聽器來獲取事件,作用(實現(xiàn)組件之間的解耦)

總結(jié):

  • BeanFactory 與 ApplicationContext 并不僅僅是簡單接口繼承的關系, ApplicationContext 組合并擴展了 BeanFactory 的功能
  • 又新學一種代碼之間解耦途徑(發(fā)布事件)

到此這篇關于Spring ApplicationContext接口功能詳細介紹的文章就介紹到這了,更多相關Spring ApplicationContext接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中break、continue、return語句的使用區(qū)別對比

    Java中break、continue、return語句的使用區(qū)別對比

    這篇文章主要介紹了Java中break、continue、return語句的使用區(qū)別對比,本文用非常清爽簡明的語言總結(jié)了這三個關鍵字的使用技巧,并用一個實例對比使用結(jié)果,需要的朋友可以參考下
    2015-06-06
  • SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取

    SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取

    SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取,感興趣的小伙伴們可以參考一下
    2016-05-05
  • java轉(zhuǎn)換字符串編碼格式的方法

    java轉(zhuǎn)換字符串編碼格式的方法

    這篇文章主要介紹了java轉(zhuǎn)換字符串編碼格式的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java根據(jù)模板實現(xiàn)excel導出標準化

    Java根據(jù)模板實現(xiàn)excel導出標準化

    這篇文章主要為大家詳細介紹了Java如何根據(jù)模板實現(xiàn)excel導出標準化,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-03-03
  • Java 中FastJson的基本使用

    Java 中FastJson的基本使用

    fastjson 是一個性能很好的 Java 語言實現(xiàn)的 JSON 解析器和生成器,來自阿里巴巴的工程師開發(fā)。下面通過本文給大家介紹Java 中FastJson的基本使用,需要的朋友參考下吧
    2017-11-11
  • springMVC 用戶登錄權限驗證實現(xiàn)過程解析

    springMVC 用戶登錄權限驗證實現(xiàn)過程解析

    這篇文章主要介紹了springMVC 用戶登錄權限驗證實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • idea 找不到符號或找不到包的幾種解決方法

    idea 找不到符號或找不到包的幾種解決方法

    這篇文章主要介紹了idea 找不到符號或找不到包的幾種解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 如何在 Java 中實現(xiàn)一個 redis 緩存服務

    如何在 Java 中實現(xiàn)一個 redis 緩存服務

    為什么要使用緩存?說到底是為了提高系統(tǒng)的運行速度。將用戶頻繁訪問的內(nèi)容存放在離用戶最近,訪問速度最快的地方,提高用戶的響應速度。下面我們來一起深入學習一下吧
    2019-06-06
  • Java中Map實現(xiàn)線程安全的3種方式

    Java中Map實現(xiàn)線程安全的3種方式

    本文主要介紹了Java中Map實現(xiàn)線程安全的3種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • MyBatis中selectKey標簽及主鍵回填實現(xiàn)

    MyBatis中selectKey標簽及主鍵回填實現(xiàn)

    <selectKey>標簽在MyBatis中提供了一種靈活的方式來生成和回填主鍵,本文就來介紹一下selectKey標簽及主鍵回填實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-12-12

最新評論

正安县| 高要市| 小金县| 娱乐| 曲水县| 鲁甸县| 鹤山市| 汨罗市| 佛山市| 齐河县| 朔州市| 左贡县| 柳林县| 石渠县| 南城县| 阿图什市| 都江堰市| 广饶县| 山丹县| 永定县| 车致| 桐城市| 竹北市| 东莞市| 怀来县| 宜春市| 达日县| 光山县| 云浮市| 景东| 蓬安县| 万荣县| 苍南县| 沅江市| 都江堰市| 新竹市| 灵石县| 绥棱县| 洮南市| 满洲里市| 佛学|