咕泡學(xué)院-課程spring面試寶典_第1頁
咕泡學(xué)院-課程spring面試寶典_第2頁
咕泡學(xué)院-課程spring面試寶典_第3頁
咕泡學(xué)院-課程spring面試寶典_第4頁
咕泡學(xué)院-課程spring面試寶典_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、2018Spring關(guān)于本文檔主題 咕泡學(xué)院 2018 2018Spring關(guān)于本文檔主題 咕泡學(xué)院 2018 開春跳槽特輯Spring 面試寶典 主講 Tom 老師 適用對象 咕泡學(xué)院 Java 高級 VIP 學(xué)員及 VIP 授課老師 1Spring?SpringSpring 框架是一個為JavaJavaSpring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring 框1Spring?SpringSpring 框架是一個為JavaJavaSpring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring 框SpringSpr

2、ingSpring 框架至今已集成了 20 多個模塊。這些模塊主要被分如下圖所示的核心容器、數(shù)據(jù)訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。2、使用Spring 框架能帶來哪些好處?Spring1、Dependency Injection(DI) 方法使得構(gòu)造器和 JavaBean properties 文件中的依賴關(guān)系一目了然。2、與 EJB 容器相比較,IOC 容器更加趨向于輕量級。這樣一來 IOC 容器在有限的內(nèi)存和 CPU資源的情況下進行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。3SpringSpringORMloggingJ2EE、QuartzJDK Timer,以

3、及其他視圖技術(shù)。4Spring僅僅需要選用他們需要的模塊即可。2、與 EJB 容器相比較,IOC 容器更加趨向于輕量級。這樣一來 IOC 容器在有限的內(nèi)存和 CPU資源的情況下進行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。3SpringSpringORMloggingJ2EE、QuartzJDK Timer,以及其他視圖技術(shù)。4Spring僅僅需要選用他們需要的模塊即可。5、要測試一項用 Spring 開發(fā)的應(yīng)用程序十分簡單,因為測試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框JavaBeanPOJO試數(shù)據(jù)。5、SpringWebWeb MVCwebStrutsweb6Spring(DB下)和復(fù)雜的共同事務(wù)處理(J

4、TADB)。3、什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?1、控制反轉(zhuǎn)是應(yīng)用于軟件工程領(lǐng)域中的,在運行時被裝配器對象來綁定耦合對象的一種編程技關(guān)聯(lián)關(guān)系的定義抽象化。而綁定的過程是通過“依賴注入”實現(xiàn)的。2、控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標(biāo)組件更多控制為目的設(shè)計范式,并在我們的實際工作中起到了有效的作用。3、依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功4、在 Java 中依然注入有以下三種實現(xiàn)方式:1.構(gòu)造器注入2.Setter 方法注入3.接口注入4SpringIOC?Spring 中的 org.springframework.beans 包和 org.s

5、pringframework.context 包構(gòu)成了SpringIOCBeanFactory 接口提供了一個先進的配置機制, 使得任何類型的對象的配置成為可能。2、控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標(biāo)組件更多控制為目的設(shè)計范式,并在我們的實際工作中起到了有效的作用。3、依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功4、在 Java 中依然注入有以下三種實現(xiàn)方式:1.構(gòu)造器注入2.Setter 方法注入3.接口注入4SpringIOC?Spring 中的 org.springframework.beans 包和 org.springframework.conte

6、xt 包構(gòu)成了SpringIOCBeanFactory 接口提供了一個先進的配置機制, 使得任何類型的對象的配置成為可能。ApplicationContexBeanFactory(是一個子接口BeanFactory礎(chǔ)上添加了其他功能,比如與 Spring 的 AOP 更容易集成,也提供了處理 message resource的機制( 用于國際化) 、傳播以及應(yīng)用層的特別配置, 比如針對 Web 應(yīng)用的WebApplicationContext。5、BeanFactoryApplicationContextBeanFactory 可以理解為含有 bean 集合的工廠類。BeanFactory 包

7、含了種 bean 的定義,以便在接收到客戶端請求時將對應(yīng)的 bean 實例化。BeanFactorybean 自身與bean的配置中解放出來。BeanFactory 還包含了 bean 生命周期的控制,調(diào)用客戶端的初始化方法(initialization methods)和銷毀方法(destruction methods)。從表面上看,application context 如同 bean factory 一樣具有 bean 定義、bean 關(guān)聯(lián)關(guān)系的beanapplication context1.提供了支持國際化的文本消息2.統(tǒng)一的資源文件讀取方式3.已在器中注冊的 bean 的以下是三種

8、較常見的 ApplicationContext 實現(xiàn)方式:1ClassPathXmlApplicationContextBeanFactory 可以理解為含有 bean 集合的工廠類。BeanFactory 包含了種 bean 的定義,以便在接收到客戶端請求時將對應(yīng)的 bean 實例化。BeanFactorybean 自身與bean的配置中解放出來。BeanFactory 還包含了 bean 生命周期的控制,調(diào)用客戶端的初始化方法(initialization methods)和銷毀方法(destruction methods)。從表面上看,application context 如同 bea

9、n factory 一樣具有 bean 定義、bean 關(guān)聯(lián)關(guān)系的beanapplication context1.提供了支持國際化的文本消息2.統(tǒng)一的資源文件讀取方式3.已在器中注冊的 bean 的以下是三種較常見的 ApplicationContext 實現(xiàn)方式:1ClassPathXmlApplicationContextclasspathXML上下文定義。應(yīng)用程序上下文從程序環(huán)境變量中取得。ApplicationContext context = new ClassPathXmlApplicationContext(“application.xml”);2、FileSystemXmlA

10、pplicationContext :由文件系統(tǒng)中的 XML 配置文件讀取上下文。ApplicationContextcontext=newFileSystemXmlApplicationContext(“application.xml”);3、XmlWebApplicationContext:由 Web 應(yīng)用的XML 文件讀取上下文。6、Spring 提供幾種配置方式來設(shè)置元數(shù)據(jù)?Spring1.基于 XML 的配置2.基于注解的配置3.基于 Java 的配置7XMLSpring?SpringXML這些配置文件的格式通常用開頭,然后一系列的 bean 定義和專門的應(yīng)用配置選項組成。Sprin

11、gXML 配置的主要目的時候是使所有的Spring 組件都可以用xml 文件的形式來進行配置。7XMLSpring?SpringXML這些配置文件的格式通常用開頭,然后一系列的 bean 定義和專門的應(yīng)用配置選項組成。SpringXML 配置的主要目的時候是使所有的Spring 組件都可以用xml 文件的形式來進行配置。Spring(Java Class)Spring 的 XML 配置方式是使用被 Spring 命名空間的所支持的一系列的 XML 標(biāo)簽來實現(xiàn)的。Springcontext、beans、jdbc、tx、aop、mvcaso。下面這個 web.xml 僅僅配置了 Dispatche

12、rServlet,這件最簡單的配置便能滿足應(yīng)用程序配置運行時組件的需求。Archetype Created Web Applicationspring8、如何用基于Java 配置的方式配置 Spring?Spring 對 Java 配置的支持是由Configuration 注解和Bean 注解來實現(xiàn)的。由Bean 注解的方法將會實例化、配置和初始化一個新對象,這個對象將由 Spring 的 IOC 容器來管理。Bean 聲明所起到的作用與 元素類似。被Configuration 所注解的類則表示這個類的主要目的是作為 bean 定義的資源。被Configuration 聲明的類可以通過在同一個

13、類的內(nèi)部調(diào)用beanbean最簡單的Configuration 聲明類請參考下面的代碼:Configuration public class8、如何用基于Java 配置的方式配置 Spring?Spring 對 Java 配置的支持是由Configuration 注解和Bean 注解來實現(xiàn)的。由Bean 注解的方法將會實例化、配置和初始化一個新對象,這個對象將由 Spring 的 IOC 容器來管理。Bean 聲明所起到的作用與 元素類似。被Configuration 所注解的類則表示這個類的主要目的是作為 bean 定義的資源。被Configuration 聲明的類可以通過在同一個類的內(nèi)部調(diào)

14、用beanbean最簡單的Configuration 聲明類請參考下面的代碼:Configuration public classAppConfig Beanpublic MyService myService() org.springframework.web.servlet.DispatcherServlet1spring/對于上面的Beans 配置文件相同的XML 配置文件如下:上述配置方式的實例化方式如下:利用 AnnotationConfigApplicationContext 類進行實例化要使用組件組建掃描,僅需用Configuration 進行注解即可:在上面的例子中,com.g

15、upaoedu 包首先會被掃到,然后再容器內(nèi)查找被Component 聲明的類,找到后將這些類按照 Sring bean 定義進行注冊。如 果 你 要 在 你 的 web 應(yīng) 用 開 發(fā) 中 選 用 上 述 的 配 置 的 方 式 的 話 , 需 要 用ConfigurationComponentScan(basePackages = com.gupaoedu) public class AppConfig public staticvoid對于上面的Beans 配置文件相同的XML 配置文件如下:上述配置方式的實例化方式如下:利用 AnnotationConfigApplicationCon

16、text 類進行實例化要使用組件組建掃描,僅需用Configuration 進行注解即可:在上面的例子中,com.gupaoedu 包首先會被掃到,然后再容器內(nèi)查找被Component 聲明的類,找到后將這些類按照 Sring bean 定義進行注冊。如 果 你 要 在 你 的 web 應(yīng) 用 開 發(fā) 中 選 用 上 述 的 配 置 的 方 式 的 話 , 需 要 用ConfigurationComponentScan(basePackages = com.gupaoedu) public class AppConfig public staticvoidmatring args)Applic

17、ationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); MyService myService = ctx.getBean(MyService.class);myService.doStuff();return new MyServiceImpl();AnnotationConfigWebApplicationContext 類來讀取配置文件, 可以用來配置 Spring 的ServletContrextLoaderListenerSpring MVCAnnotationConfigWebAppli

18、cationContext 類來讀取配置文件, 可以用來配置 Spring 的ServletContrextLoaderListenerSpring MVCDispatcherServlet。contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContextcontextConfigLocationcom.gupaoedu.AppConfigorg.springframework.web.context.ContextLoaderListenerdispatcherorg.spri

19、ngframework.web.servlet.DispatcherServletcontextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContextcontextConfigLocationcom.gupaoedu.web.MVCConfig9、怎樣用注解的方式配置 Spring?Spring2.5XMLbeanbeanXML對于同一個屬性的處理結(jié)果。注解裝配在 Spring 中是默認(rèn)關(guān)閉的。所以需要在 Spring 文件中配置一下才能使用基于注解的裝配模式。如果你想要在你的應(yīng)用程

20、序中使用關(guān)于注解的方法的話,請參考如下的配置。9、怎樣用注解的方式配置 Spring?Spring2.5XMLbeanbeanXML對于同一個屬性的處理結(jié)果。注解裝配在 Spring 中是默認(rèn)關(guān)閉的。所以需要在 Spring 文件中配置一下才能使用基于注解的裝配模式。如果你想要在你的應(yīng)用程序中使用關(guān)于注解的方法的話,請參考如下的配置。Spring量。下面是幾種比較重要的注解類型:1.Required:該注解應(yīng)用于設(shè)值方法。2.Autowired:該注解應(yīng)用于有值設(shè)值方法、非設(shè)值方法、構(gòu)造方法和變量。3.Qualifier:該注解和Autowiredbeandispatcher/web/*4.J

21、SR-250 Annotations : Spring 支持基于 JSR-250 注解的以下注解, Resource 、PostConstruct 和 PreDestroy 。10Spring BeanSpring Beanbeanbeanbean容器中移除。Spring bean factory 負(fù)責(zé)管理在 springbean4.JSR-250 Annotations : Spring 支持基于 JSR-250 注解的以下注解, Resource 、PostConstruct 和 PreDestroy 。10Spring BeanSpring Beanbeanbeanbean容器中移除。S

22、pring bean factory 負(fù)責(zé)管理在 springbeanBean由兩組回調(diào)(call back)方法組成。1.初始化之后調(diào)用的回調(diào)方法。2.銷毀之前調(diào)用的回調(diào)方法。Spring理bean期:1、InitializingBean 和DisposableBean 回調(diào)接口2Aware3、Bean 配置文件中的Custom init()方法和 destroy()方法4、PostConstructPreDestroy使用 customInit()和 customDestroy()方法管理 bean 生命周期的代碼樣例如下:11、Spring Bean 作用域之間的區(qū)別?Spring 容器

23、中的bean5還是讓我們來解釋一下:1.singleton:這種 bean 范圍是默認(rèn)的,這種范圍確保不管接受到多少個請求,每個容器中只beanbean totypebean3.request:在請求 bean 范圍內(nèi)會每一個來自客戶端的網(wǎng)絡(luò)請求創(chuàng)建一個實例,在請求完成以后,bean 會失效并被垃圾回收器回收。11、Spring Bean 作用域之間的區(qū)別?Spring 容器中的bean5還是讓我們來解釋一下:1.singleton:這種 bean 范圍是默認(rèn)的,這種范圍確保不管接受到多少個請求,每個容器中只beanbean totypebean3.request:在請求 bean 范圍內(nèi)會每

24、一個來自客戶端的網(wǎng)絡(luò)請求創(chuàng)建一個實例,在請求完成以后,bean 會失效并被垃圾回收器回收。4.Session:與請求范圍類似,確保每個 session 中有一個 bean 的實例,在 session 過期后,bean 會隨之失效。5.global-session:global-session 和 Portlet 應(yīng)用相關(guān)。當(dāng)你的應(yīng)用部署在 Portlet 容器中工作時,它包含很多 portlet。如果你想要聲明讓所有的 portlet 共用全局的存儲變量的話,那么global-sessionServletsession12、什么是 Spring inner beans?Springbean個b

25、ean 聲明為內(nèi)部bean。內(nèi)部bean 可以用setter的方式來實現(xiàn)。Customer 類引用了一個Person個Person 的實例,然后在Customer 內(nèi)部使用。beanbeanpublic classCustomer private Person person;/Setters and Getterspublic classPerson private String name; private String address; private intage;13、Spring 框架中的單例Beans 是線程安全的么?Spring 框架并沒有對單例 bean 進行任何多線程的封裝處理

26、。關(guān)于單例 bean 的線程安全和并發(fā)問題需要開發(fā)者自行去搞定。但實際上,大部分的 Spring bean 并沒有可變的狀態(tài)(比如ServiewDAOSpringbeanbean有多種狀態(tài)的話(比如 View Model 對象),就需要自行保證線程安全。最淺顯的解決辦法就是將多態(tài) bean 的作用域由“singleton”變更為“prototype”。14、請舉例說明如何在Spring 中注入一個 Java 集合?13、Spring 框架中的單例Beans 是線程安全的么?Spring 框架并沒有對單例 bean 進行任何多線程的封裝處理。關(guān)于單例 bean 的線程安全和并發(fā)問題需要開發(fā)者自行

27、去搞定。但實際上,大部分的 Spring bean 并沒有可變的狀態(tài)(比如ServiewDAOSpringbeanbean有多種狀態(tài)的話(比如 View Model 對象),就需要自行保證線程安全。最淺顯的解決辦法就是將多態(tài) bean 的作用域由“singleton”變更為“prototype”。14、請舉例說明如何在Spring 中注入一個 Java 集合?Spring 提供了以下四種集合類的配置元素:1、 : 該標(biāo)簽用來裝配可重復(fù)的 list 值。2、 : 該標(biāo)簽用來裝配沒有重復(fù)的 set 值。3、: 該標(biāo)簽可用來注入鍵和值可以為任何類型的鍵值對。4、 : 該標(biāo)簽支持注入鍵和值都是字符串類

28、型的鍵值對。下面看一下具體的例子:INDIAPakistanUSAPakistanUSAUKINDIAPakistanUSAUK15Spring Beanjava.util.Properties?第一種方法是使用如下面代碼所示的 標(biāo)簽:15Spring Beanjava.util.Properties?第一種方法是使用如下面代碼所示的 標(biāo)簽:admin HYPERLINK mailto:support supportadmin HYPERLINK mailto:support supportpropertiespropertiesbeansetter方法注入 bean 的引用。16Spring

29、 BeanSpringbean自動裝配合作關(guān)系 bean 之間的關(guān)聯(lián)關(guān)系。這意味著 Spring 可以通過向 Bean Factory 中注入propertiespropertiesbeansetter方法注入 bean 的引用。16Spring BeanSpringbean自動裝配合作關(guān)系 bean 之間的關(guān)聯(lián)關(guān)系。這意味著 Spring 可以通過向 Bean Factory 中注入beanbean的bean 上。XMLbean除了 bean 配置文件中提供的自動裝配模式,還可以使用Autowired 注解來自動裝配指定的bean。在使用Autowired 注解之前需要在按照如下的配置方式在

30、 Spring 配置文件進行配置才可以使用。也可以通過在配置文件中配置 AutowiredAnnotationBeanPostProcessor 達到相同的效果。1配置好以后就可以使用Autowired 來標(biāo)注了。17、請解釋各種自動裝配模式的區(qū)別?Spring51.no:Springbean定義中用標(biāo)簽明確的設(shè)置依賴關(guān)系。:該選項可以根據(jù)beanbean容器將根據(jù) bean 的名稱自動在在配置文件中查詢一個匹配的 bean。如果找到的話,就裝配這個屬性,如果沒找到的話就報錯。17、請解釋各種自動裝配模式的區(qū)別?Spring51.no:Springbean定義中用標(biāo)簽明確的設(shè)置依賴關(guān)系。:該選

31、項可以根據(jù)beanbean容器將根據(jù) bean 的名稱自動在在配置文件中查詢一個匹配的 bean。如果找到的話,就裝配這個屬性,如果沒找到的話就報錯。3.byTypebeanbean容器將根據(jù) bean 的類型自動在在配置文件中查詢一個匹配的 bean。如果找到的話,就裝配這個屬性,如果沒找到的話就報錯。4.constructor:造器的自動裝配和 byType 模式類似,但是僅僅適用于與有構(gòu)造器相同參數(shù)的bean,如果在容器中沒有找到與構(gòu)造器參數(shù)類型一致的 bean,那么將會拋出異常。byTypebeanbyTpe18、如何開啟基于注解的自動裝配?Autowiredpublic Employ

32、eeDAOImpl ( EmployeeManager manager ) this.manager = manager;要使用 Autowired,需要注冊 AutowiredAnnotationBeanPostProcessor,可以有以下兩種方式來實現(xiàn):1、引入配置文件中的下引入2beanAutowiredAnnotationBeanPostProcessor19、自動裝配有哪些局限性?自動裝配有如下局限性:重寫:你仍然需要使用 和設(shè)置指明依賴,這意味著總要重寫自動裝配。原生數(shù)據(jù)類型:你不能自動裝配簡單的屬性,如原生類型、字符串和類。模糊特性:自動裝配總是沒有自定義裝配精確,因此,如果可

33、能盡量使用自定義裝配。要使用 Autowired,需要注冊 AutowiredAnnotationBeanPostProcessor,可以有以下兩種方式來實現(xiàn):1、引入配置文件中的下引入2beanAutowiredAnnotationBeanPostProcessor19、自動裝配有哪些局限性?自動裝配有如下局限性:重寫:你仍然需要使用 和設(shè)置指明依賴,這意味著總要重寫自動裝配。原生數(shù)據(jù)類型:你不能自動裝配簡單的屬性,如原生類型、字符串和類。模糊特性:自動裝配總是沒有自定義裝配精確,因此,如果可能盡量使用自定義裝配。20Springnull完全可以。21、請舉例解釋Required Annot

34、ation?在產(chǎn)品級別的應(yīng)用中,IOC 容器可能聲明了數(shù)十萬了 bean,bean 與 bean 之間有著復(fù)雜的依通過在中設(shè)置“dependency-check”來解決這個問題。bean正確配置。 或者你寧可驗證某個 bean 的特定屬性是否被正確的設(shè)置。 即使是用“ dependency-check ” 屬性也不能很好的解決這個問題, 在這種情況下, 你需要使用Required 注解。需要用如下的方式使用來標(biāo)明 bean 的設(shè)值方法。21、請舉例解釋Required Annotation?在產(chǎn)品級別的應(yīng)用中,IOC 容器可能聲明了數(shù)十萬了 bean,bean 與 bean 之間有著復(fù)雜的依通

35、過在中設(shè)置“dependency-check”來解決這個問題。bean正確配置。 或者你寧可驗證某個 bean 的特定屬性是否被正確的設(shè)置。 即使是用“ dependency-check ” 屬性也不能很好的解決這個問題, 在這種情況下, 你需要使用Required 注解。需要用如下的方式使用來標(biāo)明 bean 的設(shè)值方法。public class EmployeeFactoryBean extends AbstractFactoryBean private String designation; public String getDesignation() return designation

36、;Requiredpublic void setDesignation(String designation) this.designation = designation;RequiredAnnotationBeanPostProcessor 是 Spring 中的后置處理用來驗證被Required 注beanRequiredAnnotationBeanPostProcessobeanIOC但 是 如 果 沒 有 屬 性 被 用Required 注RequiredAnnotationBeanPostProcessor 是 Spring 中的后置處理用來驗證被Required 注beanReq

37、uiredAnnotationBeanPostProcessobeanIOC但 是 如 果 沒 有 屬 性 被 用Required 注 解 過 的 話 , 后 置 處 理 器 會 拋 出 一 個BeanInitializationException 異常。22、請舉例解釋Autowired 注解?Autowired 注解對自動裝配何時何處被實現(xiàn)提供了更多細(xì)粒度的控制。Autowired 注解可以像Required 注解、構(gòu)造器一樣被用于在 bean 的設(shè)值方法上自動裝配 bean 的屬性,一個參數(shù)或者帶有任意名稱或帶有多個參數(shù)的方法。比如,可以在設(shè)值方法上使用Autowired 注解來替代配置

38、文件中的 元素。當(dāng) Spring 容器在setter 方法上找到Autowired 注解時,會嘗試用 byType 自動裝配。當(dāng)然我們也可以在構(gòu)造方法上使用Autowired 注解。帶有Autowired 注解的構(gòu)造方法意味著在創(chuàng)建一個 bean 時將會被自動裝配,即便在配置文件中使用 元素。public class TextEditor private SpellChecker spellChecker; Autowiredpublic TextEditor(SpellChecker spellChecker)System.out.println(ide TextEditor constru

39、ctor.);下面是沒有構(gòu)造參數(shù)的配置方式:23、請舉例說明Qualifier 注解?Qualifier 注解意味著可以在被標(biāo)注bean 的字段上可以自動裝配。Qualifier 注解可以用來取消 Spring 不能取消的bean 應(yīng)用。Customer 的person下面是沒有構(gòu)造參數(shù)的配置方式:23、請舉例說明Qualifier 注解?Qualifier 注解意味著可以在被標(biāo)注bean 的字段上可以自動裝配。Qualifier 注解可以用來取消 Spring 不能取消的bean 應(yīng)用。Customer 的personpersonthis.spellChecker = spellChecke

40、r;public voidspellCheck() spellChecker.ch eckSpelling();PersonSpringperson bean的異常:Causedby:org.springframework.beans.factory.NoSuchBeanDefinitionException:PersonSpringperson bean的異常:Causedby:org.springframework.beans.factory.NoSuchBeanDefinitionException:No unique bean of type mon.Person is defined

41、:expected single matching bean but found 2: personA, personB要解決上面的問題,需要使用 Quanlifier 注解來告訴 Spring 容器要裝配哪個 bean:public classCustomer Autowired Qualifier(personA)private Person person;public classCustomer Autowired private Person person;24、構(gòu)造方法注入和設(shè)值注入有什么區(qū)別?請注意以下明顯的區(qū)別:1int、stringlong否則的話為報錯。2象被創(chuàng)建時調(diào)用。3有

42、可能是不完整的。而在另一種情況下,構(gòu)造器注入則不允許生成依賴關(guān)系不完整的對象。4. 在設(shè)值注入時如果對象 A 和對象 B 互相依賴, 在創(chuàng)建對象 A 時 Spring 會拋出sObjectCurrentlyInCreationException 異常,因為在 B 對象被創(chuàng)建之前 A 對象是不能被創(chuàng)建Spring對象被創(chuàng)建之前被調(diào)用的。25、Spring 框架中有哪些不同類型的?Spring 的 ApplicationContext 提供了支持和代碼中器的功能。我們可以創(chuàng)建 bean 用來24、構(gòu)造方法注入和設(shè)值注入有什么區(qū)別?請注意以下明顯的區(qū)別:1int、stringlong否則的話為報錯。

43、2象被創(chuàng)建時調(diào)用。3有可能是不完整的。而在另一種情況下,構(gòu)造器注入則不允許生成依賴關(guān)系不完整的對象。4. 在設(shè)值注入時如果對象 A 和對象 B 互相依賴, 在創(chuàng)建對象 A 時 Spring 會拋出sObjectCurrentlyInCreationException 異常,因為在 B 對象被創(chuàng)建之前 A 對象是不能被創(chuàng)建Spring對象被創(chuàng)建之前被調(diào)用的。25、Spring 框架中有哪些不同類型的?Spring 的 ApplicationContext 提供了支持和代碼中器的功能。我們可以創(chuàng)建 bean 用來在 ApplicationContext 中發(fā)布的。ApplicationEvent

44、類和ApplicationContext,如果一個bean 實現(xiàn)了ApplicationListener 接口,當(dāng)一個 ApplicationEvent 被發(fā)布以后,bean 會自動被。Spring 提供了以下 5 中標(biāo)準(zhǔn)的:1.上下文更新(ContextRefreshedEvent):該ApplicationContext者更新時發(fā)布。也可以在調(diào)用 ConfigurableApplicationContext 接口中的 refresh()方法時被觸發(fā)。2.上下文開始(ContextStartedEvent):當(dāng)容器調(diào)用 ConfigurableApplicationContext的 Star

45、t()方法開始/重新開始容器時觸發(fā)該。3.上下文停止ConfigurableApplicationContext的 Stop()方法停止容器時觸發(fā)該。4.上下文關(guān)閉(ContextClosedEvent):當(dāng) ApplicationContext 被關(guān)閉時觸發(fā)該。Bean5.請求處理(RequestHandledEvent):在 Web 應(yīng)用中,當(dāng)一個 http 請求(request)publicclassAllApplicationEventListenerimplementsApplicationListenerApplicationEvent Overridepublic void on

46、ApplicationEvent(ApplicationEvent applicationEvent)ApplicationContext,如果一個bean 實現(xiàn)了ApplicationListener 接口,當(dāng)一個 ApplicationEvent 被發(fā)布以后,bean 會自動被。Spring 提供了以下 5 中標(biāo)準(zhǔn)的:1.上下文更新(ContextRefreshedEvent):該ApplicationContext者更新時發(fā)布。也可以在調(diào)用 ConfigurableApplicationContext 接口中的 refresh()方法時被觸發(fā)。2.上下文開始(ContextStarted

47、Event):當(dāng)容器調(diào)用 ConfigurableApplicationContext的 Start()方法開始/重新開始容器時觸發(fā)該。3.上下文停止ConfigurableApplicationContext的 Stop()方法停止容器時觸發(fā)該。4.上下文關(guān)閉(ContextClosedEvent):當(dāng) ApplicationContext 被關(guān)閉時觸發(fā)該。Bean5.請求處理(RequestHandledEvent):在 Web 應(yīng)用中,當(dāng)一個 http 請求(request)publicclassAllApplicationEventListenerimplementsApplicati

48、onListenerApplicationEvent Overridepublic void onApplicationEvent(ApplicationEvent applicationEvent)/process event結(jié)束觸發(fā)該。除了上面介紹的以外,還可以通過擴展 ApplicationEvent 類來開發(fā)自定義的。為了這個,還需要創(chuàng)建一個器:applicationContextpublishEvent()方法來發(fā)布自定義。CustomApplicationEvent customEvent = new CustomApplicationEvent(applicationContex

49、t,“Test message”);applicationContext.publishEvent(customEvent);26FileSystemResourceClassPathResource別?publicclassCustomEventListenerimplementsApplicationListener結(jié)束觸發(fā)該。除了上面介紹的以外,還可以通過擴展 ApplicationEvent 類來開發(fā)自定義的。為了這個,還需要創(chuàng)建一個器:applicationContextpublishEvent()方法來發(fā)布自定義。CustomApplicationEvent customEvent = new CustomApplicationE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論