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