亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring框架初始化解析

2024-07-13 10:13:39
字體:
來源:轉載
供稿:網友

一、Spring能做什么?

Spring的主要目的是使J2EE易用和促進好編程習慣。

倒置控制容器 Spring的設計核心是 org.springframework.beans 包, 為與JavaBeans一起工作而設計。 這個包一般不直接被用戶使用, 但作為基礎為更多的其他功能服務. 下一個較高層面的抽象是"Bean Factory"。 Spring bean factory 是一個普通的Factory,它使對象能夠按名稱獲取,并且能管理對象之間的關系。 Bean factories 支持兩種對象模式: . Singleton:在此模式中,有一個具有特定名稱的共享對象實例,它在查找時被獲取。這是默認的,而且是最為經常使用的。它對于無狀態對象是一種理想的模式。 .Prototype:在此模式中,每次獲取將創建一個獨立的對象。

二、spring啟動加載及實現方式

第一種:通過注解@PostConstruct 和 @PreDestroy 方法 實現初始化和銷毀bean之前進行的操作

第二種:通過 在xml中定義init-method 和 destory-method方法

第三種:通過bean實現InitializingBean和 DisposableBean接口

第四種:寫一個類,實現BeanPostProcessor接口,這個接口有兩個方法。

(1):postProcessBeforeInitialization方法,在spring中定義的bean初始化前調用這個方法
(2):postProcessAfterInitialization方法,在spring中定義的bean初始化后調用這個方法
或實現
InstantiationAwareBeanPostProcessor,是BeanPostProcessor的子接口
Spring 容器加載完成后執行

從spring監聽器作為入口。

org.springframework.web.context.ContextLoaderListener

找到初始化spring的方法

/**    * Initialize the root web application context.    */   @Override   public void contextInitialized(ServletContextEvent event) {     initWebApplicationContext(event.getServletContext());   } 

進入initWebApplicationContext 方法

if (this.context == null) {   this.context = createWebApplicationContext(servletContext); } if (this.context instanceof ConfigurableWebApplicationContext) {   ConfigurableWebApplicationContext cwac = (ConfigurableWebApplicationContext) this.context;   if (!cwac.isActive()) {     // The context has not yet been refreshed -> provide services such as     // setting the parent context, setting the application context id, etc     if (cwac.getParent() == null) {       // The context instance was injected without an explicit parent ->       // determine parent for root web application context, if any.       ApplicationContext parent = loadParentContext(servletContext);       cwac.setParent(parent);     }     configureAndRefreshWebApplicationContext(cwac, servletContext);   } } 

ApplicationListener

1、編寫一個實現ApplicationListener的listener類,

import org.springframework.context.ApplicationListener;import org.springframework.context.event.ContextRefreshedEvent;import org.springframework.stereotype.Service;@Servicepublic class StartupListenerimplements ApplicationListener<ContextRefreshedEvent>{  @Override  public void onApplicationEvent(ContextRefreshedEvent event)  {    if(event.getApplicationContext().getParent() == null)//root application context 沒有parent,他就是老大.    {       //需要執行的邏輯代碼,當spring容器初始化完成后就會執行該方法。       System.out.println("/n/n/n/n/n______________/n/n/n加載了/n/n_________/n/n");    }         //或者下面這種方式    if(event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext"))    {      System.out.println("/n/n/n_________/n/n加載一次的 /n/n ________/n/n/n/n");    }      }}

2、在配置文件(applicationContext-servlet.xml)中設置Service掃描的包

<!-- 注冊@Controller 、@Service-->  <context:component-scan base-package="com.test.controller" use-default-filters="false">    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />  </context:component-scan>

3、部署啟動項目,即可在加載完spring后就打印出“加載”

applicationontext和使用MVC之后的webApplicationontext會兩次調用上面的方法,如何區分這個兩種容器呢?

但是這個時候,會存在一個問題,在web項目中(springmvc),系統會存在兩個容器,一個是rootapplicationcontext,另一個就是我們自己的projectName-servletcontext(作為rootapplicationcontext的子容器)。

這種情況下,就會造成onApplicationEvent方法被執行兩次。為了避免上面提到的問題,我們可以只在rootapplicationcontext初始化完成后調用邏輯代碼,其他的容器的初始化完成,則不做任何處理,修改后代碼

如下:

@Override    public void onApplicationEvent(ContextRefreshedEvent event) {     if(event.getApplicationContext().getParent() == null){//root application context 沒有parent,他就是老大.        //需要執行的邏輯代碼,當spring容器初始化完成后就會執行該方法。     }    } 

初始化的順序是:

Constructor > @PostConstruct > InitializingBean > init-method

總結

以上就是本文關于Spring框架初始化解析的全部內容,希望對大家有所幫助。如有問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品xxx视频| 国产精品国产亚洲伊人久久| 亚洲欧美日韩区| 欧美成人高清视频| 奇米一区二区三区四区久久| 亚洲国产精品成人av| 欧美电影免费观看电视剧大全| 一区二区三区天堂av| 久久久久久久久中文字幕| 丁香五六月婷婷久久激情| 中文字幕日韩精品有码视频| 欧美激情xxxx| 日韩最新av在线| 北条麻妃99精品青青久久| 在线日韩日本国产亚洲| 欧洲成人在线观看| 97精品一区二区三区| 国产中文字幕亚洲| 国产成人综合久久| 国产日韩欧美自拍| 日韩欧美在线视频免费观看| 91久久精品日日躁夜夜躁国产| 色妞欧美日韩在线| 精品国产乱码久久久久久婷婷| 国产精品视频1区| 国产精品久久99久久| 日韩欧美精品在线观看| 亚洲欧美制服中文字幕| 成人h视频在线观看播放| 一区二区三区 在线观看视| 2018中文字幕一区二区三区| 国产视频丨精品|在线观看| 97视频国产在线| 成人av在线天堂| 国产精品成人va在线观看| 欧美国产在线视频| 国产成人自拍视频在线观看| 国产精品国语对白| 国产亚洲日本欧美韩国| 亚洲丝袜一区在线| 91久久精品视频| 国产精品第10页| 米奇精品一区二区三区在线观看| 久久夜色精品亚洲噜噜国产mv| 国产精品av免费在线观看| 91av在线免费观看视频| 欧美一区二区影院| 欧美性xxxx极品hd欧美风情| 国产亚洲欧美一区| 国产精品入口福利| 成人黄色免费在线观看| 成人淫片在线看| 欧美黑人性生活视频| 欧美激情国产精品| 日本19禁啪啪免费观看www| 久久99久久亚洲国产| 2019日本中文字幕| 欧美日本中文字幕| 国产日韩欧美另类| 91精品国产91久久| 操人视频在线观看欧美| 国产丝袜一区二区三区| 色噜噜狠狠狠综合曰曰曰| 欧美一级bbbbb性bbbb喷潮片| 美日韩精品免费视频| 日韩精品一区二区视频| 欧美激情在线观看视频| 亚洲二区中文字幕| 亚洲精美色品网站| 日韩在线视频国产| 中文字幕九色91在线| 精品国产精品自拍| 日本久久亚洲电影| 国内精品久久久久影院优| 欧美视频不卡中文| 久久久亚洲福利精品午夜| 久久精品视频在线观看| 国产精品va在线播放| 91经典在线视频| 国语自产精品视频在线看抢先版图片| 久色乳综合思思在线视频| 国产美女精品视频免费观看| 韩国19禁主播vip福利视频| xvideos成人免费中文版| 国产精品99免视看9| 一区二区三区视频免费| 91免费的视频在线播放| 国产一区二区三区网站| 国产精品欧美一区二区三区奶水| 久久99久久99精品中文字幕| 久久99国产精品自在自在app| 国产精品久久久久久一区二区| 欧美自拍大量在线观看| 成人xvideos免费视频| 日韩久久午夜影院| 美女999久久久精品视频| 成人激情视频在线观看| 91香蕉嫩草神马影院在线观看| 久久久精品2019中文字幕神马| 欧美成人一二三| 亚洲久久久久久久久久久| 97久久久久久| 久久中国妇女中文字幕| 欧美日韩亚洲视频| 久久久久久久久亚洲| 国产在线不卡精品| 91久久国产婷婷一区二区| 亚洲一品av免费观看| 国产亚洲精品久久久久动| 亚洲天堂成人在线视频| 亚洲欧美日韩区| 日韩动漫免费观看电视剧高清| 欧美国产日韩中文字幕在线| 亚洲欧美国产另类| 国产一区二区丝袜| 日韩av在线播放资源| 亚洲人成电影在线播放| 国产精品成人一区二区| 日韩av中文字幕在线免费观看| 亚洲国产精品99| 国产精品免费久久久久影院| 日韩中文理论片| 欧美尤物巨大精品爽| 日韩中文字幕网| 久久久久久久999| 欧美日韩中文字幕在线| 欧美成人免费播放| 久久精品国产亚洲精品2020| 国产精品欧美久久久| 国产日韩av高清| 亚洲xxxx3d| 久久久亚洲精选| 国产精欧美一区二区三区| 91沈先生在线观看| 亚洲国产日韩欧美在线动漫| 欧美日韩国产一中文字不卡| 亚洲在线视频观看| 亚洲爱爱爱爱爱| 久久夜色精品国产亚洲aⅴ| 色综合视频网站| 久久精品国产2020观看福利| 亚洲开心激情网| 中文字幕亚洲欧美日韩高清| 亚洲va久久久噜噜噜久久天堂| 国产欧美日韩精品丝袜高跟鞋| 久久亚洲影音av资源网| 亚洲男人的天堂在线| 久久久久久这里只有精品| 51久久精品夜色国产麻豆| 揄拍成人国产精品视频| 亚洲色在线视频| 欧美性开放视频| 日韩欧美中文免费| 亚洲欧美国产另类| 日韩av在线免播放器| 97精品国产97久久久久久免费| 亚洲女在线观看| 人体精品一二三区| 亚洲精品成人av| 日韩国产在线播放| 中文字幕日韩精品在线观看| 国产精品96久久久久久| 国产精品午夜国产小视频| 日韩亚洲欧美中文高清在线|