精品国产一级毛片大全,毛片一级在线,毛片免费观看的视频在线,午夜毛片福利

我要投稿 投訴建議

java面試題spring框架

時(shí)間:2022-11-02 12:07:17 面試試題 我要投稿
  • 相關(guān)推薦

java面試題spring框架

  Spring是一個(gè)提供了更完善開發(fā)環(huán)境的一個(gè)框架,可以為POJO(Plain Old Java Object)對(duì)象提供企業(yè)級(jí)的服務(wù)。下面是spring框架面試時(shí)的常見問題:

java面試題spring框架

  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