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

Spring ApplicationContext接口功能詳細介紹

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

第一步,我們先來看這個接口的內(nèi)部結(jié)構(gòu),了解別人的內(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 并不僅僅是簡單接口繼承的關(guān)系, ApplicationContext 組合并擴展了 BeanFactory 的功能
  • 又新學一種代碼之間解耦途徑(發(fā)布事件)

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

相關(guān)文章

最新評論

屯昌县| 黑河市| 松溪县| 来安县| 淅川县| 瑞金市| 古浪县| 长寿区| 汽车| 娄底市| 台东县| 来宾市| 大荔县| 黄冈市| 武乡县| 凉城县| 阿拉善盟| 萍乡市| 长泰县| 湘阴县| 丰顺县| 贺兰县| 沙田区| 清水河县| 彰化市| 洞口县| 比如县| 湖南省| 德昌县| 小金县| 郎溪县| 云和县| 武强县| 禄丰县| 铜川市| 长宁县| 会昌县| 洮南市| 家居| 无极县| 桂平市|