- 相關(guān)推薦
java面試題spring框架
Spring是一個(gè)提供了更完善開發(fā)環(huán)境的一個(gè)框架,可以為POJO(Plain Old Java Object)對(duì)象提供企業(yè)級(jí)的服務(wù)。下面是spring框架面試時(shí)的常見問題:
1.什么是Spring?
Spring是一個(gè)開源的Java EE開發(fā)框架。Spring框架的核心功能可以應(yīng)用在任何Java應(yīng)用程序中,但對(duì)Java EE平臺(tái)上的Web應(yīng)用程序有更好的擴(kuò)展性。Spring框架的目標(biāo)是使得Java EE應(yīng)用程序的開發(fā)更加簡(jiǎn)捷,通過(guò)使用POJO為基礎(chǔ)的編程模型促進(jìn)良好的編程風(fēng)格。
2.Spring有哪些優(yōu)點(diǎn)?
· 輕量級(jí):Spring在大小和透明性方面絕對(duì)屬于輕量級(jí)的,基礎(chǔ)版本的Spring框架大約只有2MB。
· 控制反轉(zhuǎn)(IOC):Spring使用控制反轉(zhuǎn)技術(shù)實(shí)現(xiàn)了松耦合。依賴被注入到對(duì)象,而不是創(chuàng)建或?qū)ふ乙蕾噷?duì)象。
· 面向切面編程(AOP): Spring支持面向切面編程,同時(shí)把應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)的服務(wù)分離開來(lái)。
· 容器:Spring包含并管理應(yīng)用程序?qū)ο蟮呐渲眉吧芷凇?/p>
· MVC框架:Spring的web框架是一個(gè)設(shè)計(jì)優(yōu)良的web MVC框架,很好的取代了一些web框架。
· 事務(wù)管理:Spring對(duì)下至本地業(yè)務(wù)上至全局業(yè)務(wù)(JAT)提供了統(tǒng)一的事務(wù)管理接口。
· 異常處理:Spring提供一個(gè)方便的API將特定技術(shù)的異常(由JDBC, Hibernate, 或JDO拋出)轉(zhuǎn)化為一致的、Unchecked異常。
3.Spring框架有哪些模塊?
Spring框架的基本模塊如下所示:
· Core module
· Bean module
· Context module
· Expression Language module
· JDBC module
· ORM module
· OXM module
· Java Messaging Service(JMS) module
· Transaction module
· Web module
· Web-Servlet module
· Web-Struts module
· Web-Portlet module
4.解釋核心容器(應(yīng)用上下文)模塊
這是Spring的基本模塊,它提供了Spring框架的基本功能。BeanFactory 是所有Spring應(yīng)用的核心。Spring框架是建立在這個(gè)模塊之上的,這也使得Spring成為一個(gè)容器。
5.BeanFactory – BeanFactory 實(shí)例
BeanFactory是工廠模式的一種實(shí)現(xiàn),它使用控制反轉(zhuǎn)將應(yīng)用的配置和依賴與實(shí)際的應(yīng)用代碼分離開來(lái)。
最常用的BeanFactory實(shí)現(xiàn)是XmlBeanFactory類。
6.XmlBeanFactory
最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory,它根據(jù)XML文件中定義的內(nèi)容加載beans。該容器從XML文件中讀取配置元數(shù)據(jù),并用它來(lái)創(chuàng)建一個(gè)完備的系統(tǒng)或應(yīng)用。
7.解釋AOP模塊
AOP模塊用來(lái)開發(fā)Spring應(yīng)用程序中具有切面性質(zhì)的部分。該模塊的大部分服務(wù)由AOP Aliance提供,這就保證了Spring框架和其他AOP框架之間的互操作性。另外,該模塊將元數(shù)據(jù)編程引入到了Spring。
8.解釋抽象JDBC和DAO模塊
通過(guò)使用抽象JDBC和DAO模塊保證了與數(shù)據(jù)庫(kù)連接代碼的整潔與簡(jiǎn)單,同時(shí)避免了由于未能關(guān)閉數(shù)據(jù)庫(kù)資源引起的問題。它在多種數(shù)據(jù)庫(kù)服務(wù)器的錯(cuò)誤信息之上提供了一個(gè)很重要的異常層。它還利用Spring的AOP模塊為Spring應(yīng)用程序中的對(duì)象提供事務(wù)管理服務(wù)。
9.解釋對(duì)象/關(guān)系映射集成模塊
Spring通過(guò)提供ORM模塊在JDBC的基礎(chǔ)上支持對(duì)象關(guān)系映射工具。這樣的支持使得Spring可以集成主流的ORM框架,包括Hibernate, JDO, 及iBATIS SQL Maps。Spring的事務(wù)管理可以同時(shí)支持以上某種框架和JDBC。
10.解釋web模塊
Spring的web模塊建立在應(yīng)用上下文(application context)模塊之上,提供了一個(gè)適合基于web應(yīng)用程序的上下文環(huán)境。該模塊還支持了幾個(gè)面向web的任務(wù),如透明的處理多文件上傳請(qǐng)求及將請(qǐng)求參數(shù)同業(yè)務(wù)對(duì)象綁定起來(lái)。
11.解釋Spring MVC模塊
Spring提供MVC框架構(gòu)建web應(yīng)用程序。Spring可以很輕松的同其他MVC框架結(jié)合,但Spring的MVC是個(gè)更好的選擇,因?yàn)樗ㄟ^(guò)控制反轉(zhuǎn)將控制邏輯和業(yè)務(wù)對(duì)象完全分離開來(lái)。
12.Spring的配置文件
Spring的配置文件是一個(gè)XML文件,文件包含了類信息并描述了這些類是如何配置和互相調(diào)用的。
13.Spring IoC容器是什么?
Spring IOC負(fù)責(zé)創(chuàng)建對(duì)象、管理對(duì)象(通過(guò)依賴注入)、整合對(duì)象、配置對(duì)象以及管理這些對(duì)象的生命周期。
14.IOC有什么優(yōu)點(diǎn)?
IOC或依賴注入減少了應(yīng)用程序的代碼量。它使得應(yīng)用程序的測(cè)試很簡(jiǎn)單,因?yàn)樵趩卧獪y(cè)試中不再需要單例或JNDI查找機(jī)制。簡(jiǎn)單的實(shí)現(xiàn)以及較少的干擾機(jī)制使得松耦合得以實(shí)現(xiàn)。IOC容器支持勤性單例及延遲加載服務(wù)。
15.應(yīng)用上下文是如何實(shí)現(xiàn)的?
FileSystemXmlApplicationContext 容器加載XML文件中beans的定義。XML Bean配置文件的完整路徑必須傳遞給構(gòu)造器。
FileSystemXmlApplicationContext 容器也加載XML文件中beans的定義。注意,你需要正確的設(shè)置CLASSPATH,因?yàn)樵撊萜鲿?huì)在CLASSPATH中查看bean的XML配置文件。
WebXmlApplicationContext:該容器加載xml文件,這些文件定義了web應(yīng)用中所有的beans。
16.Bean Factory和ApplicationContext有什么區(qū)別?
ApplicationContext提供了一種解決文檔信息的方法,一種加載文件資源的方式(如圖片),他們可以向監(jiān)聽他們的beans發(fā)送消息。另外,容器或者容器中beans的操作,這些必須以bean工廠的編程方式處理的操作可以在應(yīng)用上下文中以聲明的方式處理。應(yīng)用上下文實(shí)現(xiàn)了MessageSource,該接口用于獲取本地消息,實(shí)際的實(shí)現(xiàn)是可選的。
17.Spring應(yīng)用程序看起來(lái)像什么?
· 一個(gè)定義功能的接口
· 實(shí)現(xiàn)包括屬性,setter和getter方法,功能等
· Spring AOP
· Spring的XML配置文件
· 使用該功能的客戶端編程
依賴注入
18.Spring中的依賴注入是什么?
依賴注入作為控制反轉(zhuǎn)(IOC)的一個(gè)層面,可以有多種解釋方式。在這個(gè)概念中,你不用創(chuàng)建對(duì)象而只需要描述如何創(chuàng)建它們。你不必通過(guò)代碼直接的將組件和服務(wù)連接在一起,而是通過(guò)配置文件說(shuō)明哪些組件需要什么服務(wù)。之后IOC容器負(fù)責(zé)銜接。
19.有哪些不同類型的IOC(依賴注入)?
· 構(gòu)造器依賴注入:構(gòu)造器依賴注入在容器觸發(fā)構(gòu)造器的時(shí)候完成,該構(gòu)造器有一系列的參數(shù),每個(gè)參數(shù)代表注入的對(duì)象。
· Setter方法依賴注入:首先容器會(huì)觸發(fā)一個(gè)無(wú)參構(gòu)造函數(shù)或無(wú)參靜態(tài)工廠方法實(shí)例化對(duì)象,之后容器調(diào)用bean中的setter方法完成Setter方法依賴注入。
20.你推薦哪種依賴注入?構(gòu)造器依賴注入還是Setter方法依賴注入?
你可以同時(shí)使用兩種方式的依賴注入,最好的選擇是使用構(gòu)造器參數(shù)實(shí)現(xiàn)強(qiáng)制依賴注入,使用setter方法實(shí)現(xiàn)可選的依賴關(guān)系。
Spring Beans
21.什么是Spring Beans?
Spring Beans是構(gòu)成Spring應(yīng)用核心的Java對(duì)象。這些對(duì)象由Spring IOC容器實(shí)例化、組裝、管理。這些對(duì)象通過(guò)容器中配置的元數(shù)據(jù)創(chuàng)建,例如,使用XML文件中定義的創(chuàng)建。
在Spring中創(chuàng)建的beans都是單例的beans。在bean標(biāo)簽中有一個(gè)屬性為”singleton”,如果設(shè)為true,該bean是單例的,如果設(shè)為false,該bean是原型bean。Singleton屬性默認(rèn)設(shè)置為true。因此,spring框架中所有的bean都默認(rèn)為單例bean。
22.Spring Bean中定義了什么內(nèi)容?
Spring Bean中定義了所有的配置元數(shù)據(jù),這些配置信息告知容器如何創(chuàng)建它,它的生命周期是什么以及它的依賴關(guān)系。
23.如何向Spring 容器提供配置元數(shù)據(jù)?
有三種方式向Spring 容器提供元數(shù)據(jù):
· XML配置文件
· 基于注解配置
· 基于Java的配置
24.你如何定義bean的作用域?
在Spring中創(chuàng)建一個(gè)bean的時(shí)候,我們可以聲明它的作用域。只需要在bean定義的時(shí)候通過(guò)’scope’屬性定義即可。例如,當(dāng)Spring需要產(chǎn)生每次一個(gè)新的bean實(shí)例時(shí),應(yīng)該聲明bean的scope屬性為prototype。如果每次你希望Spring返回一個(gè)實(shí)例,應(yīng)該聲明bean的scope屬性為singleton。
25.說(shuō)一下Spring中支持的bean作用域
Spring框架支持如下五種不同的作用域:
· singleton:在Spring IOC容器中僅存在一個(gè)Bean實(shí)例,Bean以單實(shí)例的方式存在。
· prototype:一個(gè)bean可以定義多個(gè)實(shí)例。
· request:每次HTTP請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的Bean。該作用域僅適用于WebApplicationContext環(huán)境。
· session:一個(gè)HTTP Session定義一個(gè)Bean。該作用域僅適用于WebApplicationContext環(huán)境.
· globalSession:同一個(gè)全局HTTP Session定義一個(gè)Bean。該作用域同樣僅適用于WebApplicationContext環(huán)境.
bean默認(rèn)的scope屬性是’singleton‘。
26.Spring框架中單例beans是線程安全的嗎?
不是,Spring框架中的單例beans不是線程安全的。
27.解釋Spring框架中bean的生命周期
· Spring容器讀取XML文件中bean的定義并實(shí)例化bean。
· Spring根據(jù)bean的定義設(shè)置屬性值。
· 如果該Bean實(shí)現(xiàn)了BeanNameAware接口,Spring將bean的id傳遞給setBeanName()方法。
· 如果該Bean實(shí)現(xiàn)了BeanFactoryAware接口,Spring將beanfactory傳遞給setBeanFactory()方法。
· 如果任何bean BeanPostProcessors 和該bean相關(guān),Spring調(diào)用postProcessBeforeInitialization()方法。
· 如果該Bean實(shí)現(xiàn)了InitializingBean接口,調(diào)用Bean中的afterPropertiesSet方法。如果bean有初始化函數(shù)聲明,調(diào)用相應(yīng)的初始化方法。
· 如果任何bean BeanPostProcessors 和該bean相關(guān),調(diào)用postProcessAfterInitialization()方法。
· 如果該bean實(shí)現(xiàn)了DisposableBean,調(diào)用destroy()方法。
28.哪些是最重要的bean生命周期方法?能重寫它們嗎?
有兩個(gè)重要的bean生命周期方法。第一個(gè)是setup方法,該方法在容器加載bean的時(shí)候被調(diào)用。第二個(gè)是teardown方法,該方法在bean從容器中移除的時(shí)候調(diào)用。
bean標(biāo)簽有兩個(gè)重要的屬性(init-method 和 destroy-method),你可以通過(guò)這兩個(gè)屬性定義自己的初始化方法和析構(gòu)方法。Spring也有相應(yīng)的注解:@PostConstruct 和 @PreDestroy。
29.什么是Spring的內(nèi)部bean?
當(dāng)一個(gè)bean被用作另一個(gè)bean的屬性時(shí),這個(gè)bean可以被聲明為內(nèi)部bean。在基于XML的配置元數(shù)據(jù)中,可以通過(guò)把元素定義在 或元素內(nèi)部實(shí)現(xiàn)定義內(nèi)部bean。內(nèi)部bean總是匿名的并且它們的scope總是prototype。
30.如何在Spring中注入Java集合類?
Spring提供如下幾種類型的集合配置元素:
· list元素用來(lái)注入一系列的值,允許有相同的值。
· set元素用來(lái)注入一些列的值,不允許有相同的值。
· map用來(lái)注入一組”鍵-值”對(duì),鍵、值可以是任何類型的。
· props也可以用來(lái)注入一組”鍵-值”對(duì),這里的鍵、值都字符串類型
31.什么是bean wiring?
Wiring,或者說(shuō)bean Wiring是指beans在Spring容器中結(jié)合在一起的情況。當(dāng)裝配bean的時(shí)候,Spring容器需要知道需要哪些beans以及如何使用依賴注入將它們結(jié)合起來(lái)。
32.什么是bean自動(dòng)裝配?
Spring容器可以自動(dòng)配置相互協(xié)作beans之間的關(guān)聯(lián)關(guān)系。這意味著Spring可以自動(dòng)配置一個(gè)bean和其他協(xié)作bean之間的關(guān)系,通過(guò)檢查BeanFactory 的內(nèi)容里沒有使用和< property>元素。
33.解釋自動(dòng)裝配的各種模式?
自動(dòng)裝配提供五種不同的模式供Spring容器用來(lái)自動(dòng)裝配beans之間的依賴注入:
· no:默認(rèn)的方式是不進(jìn)行自動(dòng)裝配,通過(guò)手工設(shè)置ref 屬性來(lái)進(jìn)行裝配bean。
· byName:通過(guò)參數(shù)名自動(dòng)裝配,Spring容器查找beans的屬性,這些beans在XML配置文件中被設(shè)置為byName。之后容器試圖匹配、裝配和該bean的屬性具有相同名字的bean。
· byType:通過(guò)參數(shù)的數(shù)據(jù)類型自動(dòng)自動(dòng)裝配,Spring容器查找beans的屬性,這些beans在XML配置文件中被設(shè)置為byType。之后容器試圖匹配和裝配和該bean的屬性類型一樣的bean。如果有多個(gè)bean符合條件,則拋出錯(cuò)誤。
· constructor:這個(gè)同byType類似,不過(guò)是應(yīng)用于構(gòu)造函數(shù)的參數(shù)。如果在BeanFactory中不是恰好有一個(gè)bean與構(gòu)造函數(shù)參數(shù)相同類型,則拋出一個(gè)嚴(yán)重的錯(cuò)誤。
· autodetect:如果有默認(rèn)的構(gòu)造方法,通過(guò) construct的方式自動(dòng)裝配,否則使用 byType的方式自動(dòng)裝配。
34.自動(dòng)裝配有哪些局限性?
自動(dòng)裝配有如下局限性:
· 重寫:你仍然需要使用 和< property>設(shè)置指明依賴,這意味著總要重寫自動(dòng)裝配。
· 原生數(shù)據(jù)類型:你不能自動(dòng)裝配簡(jiǎn)單的屬性,如原生類型、字符串和類。
· 模糊特性:自動(dòng)裝配總是沒有自定義裝配精確,因此,如果可能盡量使用自定義裝配。
35.你可以在Spring中注入null或空字符串嗎?
完全可以。
Spring注解
36.什么是Spring基于Java的配置?給出一些注解的例子
基于Java的配置允許你使用Java的注解進(jìn)行Spring的大部分配置而非通過(guò)傳統(tǒng)的XML文件配置。
以注解@Configuration為例,它用來(lái)標(biāo)記類,說(shuō)明作為beans的定義,可以被Spring IOC容器使用。另一個(gè)例子是@Bean注解,它表示該方法定義的Bean要被注冊(cè)進(jìn)Spring應(yīng)用上下文中。
37.什么是基于注解的容器配置?
另外一種替代XML配置的方式為基于注解的配置,這種方式通過(guò)字節(jié)元數(shù)據(jù)裝配組件而非使用尖括號(hào)聲明。開發(fā)人員將直接在類中進(jìn)行配置,通過(guò)注解標(biāo)記相關(guān)的類、方法或字段聲明,而不再使用XML描述bean之間的連線關(guān)系。
38.如何開啟注解裝配?
注解裝配默認(rèn)情況下在Spring容器中是不開啟的。如果想要開啟基于注解的裝配只需在Spring配置文件中配置元素即可。
39.@Required 注解
@Required表明bean的屬性必須在配置時(shí)設(shè)置,可以在bean的定義中明確指定也可通過(guò)自動(dòng)裝配設(shè)置。如果bean的屬性未設(shè)置,則拋出BeanInitializationException異常。
40.@Autowired 注解
@Autowired 注解提供更加精細(xì)的控制,包括自動(dòng)裝配在何處完成以及如何完成。它可以像@Required一樣自動(dòng)裝配setter方法、構(gòu)造器、屬性或者具有任意名稱和/或多個(gè)參數(shù)的PN方法。
41. @Qualifier 注解
當(dāng)有多個(gè)相同類型的bean而只有其中的一個(gè)需要自動(dòng)裝配時(shí),將@Qualifier 注解和@Autowire 注解結(jié)合使用消除這種混淆,指明需要裝配的bean。
Spring數(shù)據(jù)訪問
42.在Spring框架中如何更有效的使用JDBC?
使用Spring JDBC框架,資源管理以及錯(cuò)誤處理的代價(jià)都會(huì)減輕。開發(fā)人員只需通過(guò)statements和queries語(yǔ)句從數(shù)據(jù)庫(kù)中存取數(shù)據(jù)。Spring框架中通過(guò)使用模板類能更有效的使用JDBC,也就是所謂的JdbcTemplate(例子)。
43.JdbcTemplate
JdbcTemplate類提供了許多方法,為我們與數(shù)據(jù)庫(kù)的交互提供了便利。例如,它可以將數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)化為原生類型或?qū)ο螅瑘?zhí)行寫好的或可調(diào)用的數(shù)據(jù)庫(kù)操作語(yǔ)句,提供自定義的數(shù)據(jù)庫(kù)錯(cuò)誤處理功能。
44.Spring對(duì)DAO的支持
Spring對(duì)數(shù)據(jù)訪問對(duì)象(DAO)的支持旨在使它可以與數(shù)據(jù)訪問技術(shù)(如 JDBC, Hibernate 及JDO)方便的結(jié)合起來(lái)工作。這使得我們可以很容易在的不同的持久層技術(shù)間切換,編碼時(shí)也無(wú)需擔(dān)心會(huì)拋出特定技術(shù)的異常
45.使用Spring可以通過(guò)什么方式訪問Hibernate?
使用Spring有兩種方式訪問Hibernate:
· 使用Hibernate Template的反轉(zhuǎn)控制以及回調(diào)方法
· 繼承HibernateDAOSupport,并申請(qǐng)一個(gè)AOP攔截器節(jié)點(diǎn)
46.Spring支持的ORM
Spring支持一下ORM:
· Hibernate
· iBatis
· JPA (Java -Persistence API)
· TopLink
· JDO (Java Data Objects)
· OJB
47.如何通過(guò)HibernateDaoSupport將Spring和Hibernate結(jié)合起來(lái)
使用Spring的SessionFactory 調(diào)用LocalSessionFactory。結(jié)合過(guò)程分為以下三步:
· 配置Hibernate SessionFactory
· 繼承HibernateDaoSupport實(shí)現(xiàn)一個(gè)DAO
· 使用AOP裝載事務(wù)支持
48.Spring支持的事務(wù)管理類型
Spring支持如下兩種方式的事務(wù)管理:
· 編程式事務(wù)管理:這意味著你可以通過(guò)編程的方式管理事務(wù),這種方式帶來(lái)了很大的靈活性,但很難維護(hù)。
· 聲明式事務(wù)管理:這種方式意味著你可以將事務(wù)管理和業(yè)務(wù)代碼分離。你只需要通過(guò)注解或者XML配置管理事務(wù)。
49.Spring框架的事務(wù)管理有哪些優(yōu)點(diǎn)?
· 它為不同的事務(wù)API(如JTA, JDBC, Hibernate, JPA, 和JDO)提供了統(tǒng)一的編程模型。
· 它為編程式事務(wù)管理提供了一個(gè)簡(jiǎn)單的API而非一系列復(fù)雜的事務(wù)API(如JTA).
· 它支持聲明式事務(wù)管理。
· 它可以和Spring 的多種數(shù)據(jù)訪問技術(shù)很好的融合。
50.你更推薦那種類型的事務(wù)管理?
許多Spring框架的用戶選擇聲明式事務(wù)管理,因?yàn)檫@種方式和應(yīng)用程序的關(guān)聯(lián)較少,因此更加符合輕量級(jí)容器的概念。聲明式事務(wù)管理要優(yōu)于編程式事務(wù)管理,盡管在靈活性方面它弱于編程式事務(wù)管理(這種方式允許你通過(guò)代碼控制業(yè)務(wù))。
Spring面向切面編程(AOP)
51.解釋AOP
面向切面編程,或AOP允許程序員模塊化橫向業(yè)務(wù)邏輯,或定義核心部分的功能,例如日志管理和事務(wù)管理。
52.切面(Aspect)
AOP的核心就是切面,它將多個(gè)類的通用行為封裝為可重用的模塊。該模塊含有一組API提供 cross-cutting功能。例如,日志模塊稱為日志的AOP切面。根據(jù)需求的不同,一個(gè)應(yīng)用程序可以有若干切面。在Spring AOP中,切面通過(guò)帶有@Aspect注解的類實(shí)現(xiàn)。
53.在Spring AOP中concern和 cross-cutting concern的區(qū)別是什么?
Concern(核心邏輯):表示在應(yīng)用程序中一個(gè)模塊的行為。Concern可以定義為我們想要實(shí)現(xiàn)的功能。
Cross-cutting concern(橫向的通用邏輯):指的是整個(gè)應(yīng)用程序都會(huì)用到的功能,它影響整個(gè)應(yīng)用程序。例如,日志管理(Logging)、安全管理(Security)以及數(shù)據(jù)交互是應(yīng)用程序的每個(gè)模塊都要涉及到的,因此這些都屬于Cross-cutting concern。
54.連接點(diǎn)(Join point)
連接點(diǎn)代表應(yīng)用程序中插入AOP切面的地點(diǎn)。它實(shí)際上是Spring AOP框架在應(yīng)用程序中執(zhí)行動(dòng)作的地點(diǎn)。
55.通知(Advice)
通知表示在方法執(zhí)行前后需要執(zhí)行的動(dòng)作。實(shí)際上它是Spring AOP框架在程序執(zhí)行過(guò)程中觸發(fā)的一些代碼。
Spring切面可以執(zhí)行一下五種類型的通知:
· before(前置通知):在一個(gè)方法之前執(zhí)行的通知。
· after(最終通知):當(dāng)某連接點(diǎn)退出的時(shí)候執(zhí)行的通知(不論是正常返回還是異常退出)。
· after-returning(后置通知):在某連接點(diǎn)正常完成后執(zhí)行的通知。
· after-throwing(異常通知):在方法拋出異常退出時(shí)執(zhí)行的通知。
· around(環(huán)繞通知):在方法調(diào)用前后觸發(fā)的通知。
56.切入點(diǎn)(Pointcut)
切入點(diǎn)是一個(gè)或一組連接點(diǎn),通知將在這些位置執(zhí)行?梢酝ㄟ^(guò)表達(dá)式或匹配的方式指明切入點(diǎn)。
57.什么是引入?
引入允許我們?cè)谝延械念惿咸砑有碌姆椒ɑ驅(qū)傩浴?/p>
58.什么是目標(biāo)對(duì)象?
被一個(gè)或者多個(gè)切面所通知的對(duì)象。它通常是一個(gè)代理對(duì)象。也被稱做被通知(advised)對(duì)象。
59.什么是代理?
代理是將通知應(yīng)用到目標(biāo)對(duì)象后創(chuàng)建的對(duì)象。從客戶端的角度看,代理對(duì)象和目標(biāo)對(duì)象是一樣的。
60.有幾種不同類型的自動(dòng)代理?
· BeanNameAutoProxyCreator:bean名稱自動(dòng)代理創(chuàng)建器
· DefaultAdvisorAutoProxyCreator:默認(rèn)通知者自動(dòng)代理創(chuàng)建器
· Metadata autoproxying:元數(shù)據(jù)自動(dòng)代理
61.什么是織入?什么是織入應(yīng)用的不同點(diǎn)?
織入是將切面和其他應(yīng)用類型或?qū)ο筮B接起來(lái)創(chuàng)建一個(gè)通知對(duì)象的過(guò)程。織入可以在編譯、加載或運(yùn)行時(shí)完成。
62.解釋基于XML Schema方式的切面實(shí)現(xiàn)
在這種情況下,切面由使用XML文件配置的類實(shí)現(xiàn)。
63.解釋基于注解方式(基于@AspectJ)的切面實(shí)現(xiàn)
在這種情況下(基于@AspectJ的實(shí)現(xiàn)),指的是切面的對(duì)應(yīng)的類使用Java 5注解的聲明方式。
Spring的MVC框架
64.什么是Spring的MVC框架?
Spring提供了一個(gè)功能齊全的MVC框架用于構(gòu)建Web應(yīng)用程序。Spring框架可以很容易的和其他的MVC框架融合(如Struts),該框架使用控制反轉(zhuǎn)(IOC)將控制器邏輯和業(yè)務(wù)對(duì)象分離開來(lái)。它也允許以聲明的方式綁定請(qǐng)求參數(shù)到業(yè)務(wù)對(duì)象上。
65.DispatcherServlet
Spring的MVC框架圍繞DispatcherServlet來(lái)設(shè)計(jì)的,它用來(lái)處理所有的HTTP請(qǐng)求和響應(yīng)。
66.WebApplicationContext
WebApplicationContext繼承了ApplicationContext,并添加了一些web應(yīng)用程序需要的功能。和普通的ApplicationContext 不同,WebApplicationContext可以用來(lái)處理主題樣式,它也知道如何找到相應(yīng)的servlet
67.什么是Spring MVC框架的控制器?
控制器提供對(duì)應(yīng)用程序行為的訪問,通常通過(guò)服務(wù)接口實(shí)現(xiàn)?刂破鹘馕鲇脩舻妮斎,并將其轉(zhuǎn)換為一個(gè)由視圖呈現(xiàn)給用戶的模型。Spring 通過(guò)一種極其抽象的方式實(shí)現(xiàn)控制器,它允許用戶創(chuàng)建多種類型的控制器
68.@Controller annotation
@Controller注解表示該類扮演控制器的角色。Spring不需要繼承任何控制器基類或應(yīng)用Servlet API。
69.@RequestMapping annotation
@RequestMapping注解用于將URL映射到任何一個(gè)類或者一個(gè)特定的處理方法上。
【java面試題spring框架】相關(guān)文章:
Java框架面試題07-16
Spring面試題庫(kù)09-25
Java經(jīng)典面試題12-29
Java面試題01-22
java學(xué)習(xí):Java面試題和答案07-17
2016高薪Java面試題02-20
java線程面試題匯總02-22
瞬聯(lián)java面試題03-26
阿里巴巴java面試題07-31
java工程師面試題09-25