1、談?wù)勀銓?duì)spring的理解?
Spring是個(gè)java企業(yè)級(jí)應(yīng)用的開源開發(fā)框架,輕量級(jí),基本的版本大約2MB,Spring的優(yōu)點(diǎn)主要體現(xiàn)在IOC和AOP,他兩說白了就是對(duì)工廠模式和代理模式的一個(gè)封裝!
2、解釋Spring中IOC, DI, AOP
IOC就是控制反轉(zhuǎn)或依賴注入。簡(jiǎn)單點(diǎn)說就是以前我們需要一個(gè)對(duì)象的時(shí)候都是new出來,而spring的IOC就幫我們實(shí)現(xiàn)了這一點(diǎn),通過Spring的bean工廠為你生成所需要的對(duì)象
3、Spring的IOC是解耦,AOP是干什么的?
AOP面向切面編程 將程序中的交叉業(yè)務(wù)邏輯(比如安全,日志,事務(wù)等),封裝成一個(gè)切面,然后注入到目標(biāo)對(duì)象(具體業(yè)務(wù)邏輯)中去。 比如: 很多方法可能會(huì)拋異常,你要記錄這個(gè)異常到日志中去,可以寫個(gè)攔截器類,在這個(gè)類中記錄日志 在spring.xml中配置一個(gè)對(duì)這些要記錄日志的方法的aop攔截器 在這個(gè)方法執(zhí)行后調(diào)用這個(gè)攔截器,記錄日志。這樣就不用每次拋異常都要手動(dòng)記錄日志。 spring的事務(wù)管理用到的就是aop 這樣也可以提高程序的內(nèi)聚性。
4、 Bean 工廠和 Application contexts 有什么區(qū)別?
Application contexts提供一種方法處理文本消息,一個(gè)通常的做法是加載文件資源(比如鏡像),它們可以向注冊(cè)為監(jiān)聽器的bean發(fā)布事件。另外,在容器或容器內(nèi)的對(duì)象上執(zhí)行的那些不得不由bean工廠以程序化方式處理的操作,可以Application contexts中以聲明的方式處理。Application contexts實(shí)現(xiàn)了MessageSource接口,該接口的實(shí)現(xiàn)以可插拔的方式提供獲取本地化消息的方法。
5、有哪些不同類型的IOC(依賴注入)方式?
(1)構(gòu)造器依賴注入:構(gòu)造器依賴注入通過容器觸發(fā)一個(gè)類的構(gòu)造器來實(shí)現(xiàn)的,該類有一系列參數(shù),每個(gè)參數(shù)代表一個(gè)對(duì)其他類的依賴
(2)Setter方法注入:Setter方法注入是容器通過調(diào)用無參構(gòu)造器或無參static工廠 方法實(shí)例化bean之后,調(diào)用該bean的setter方法,即實(shí)現(xiàn)了基于setter的依賴注入。
6、Spring beans是什么?
Spring beans 是那些形成Spring應(yīng)用的主干的java對(duì)象。它們被Spring IOC容器初始化,裝配,和管理。這些beans通過容器中配置的元數(shù)據(jù)創(chuàng)建。比如,以XML文件中 的形式定義。Spring 框架定義的beans都是單件beans。在bean tag中有個(gè)屬性”singleton”,如果它被賦為TRUE,bean 就是單件,否則就是一個(gè) prototype bean。默認(rèn)是TRUE,所以所有在Spring框架中的beans 缺省都是單件。
7、 一個(gè) Spring Bean 定義 包含什么?
一個(gè)Spring Bean 的定義包含容器必知的所有配置元數(shù)據(jù),包括如何創(chuàng)建一個(gè)bean,它的生命周期詳情及它的依賴
8、Spring框架中的單例bean是線程安全的嗎?
Spring框架中的單例bean不是線程安全的
9、Spring的注解有哪些?
@Component:是所有受Spring 管理組件的通用形式,@Component注解可以放在類的頭上,@Component不推薦使用。
@Controller: @Controller對(duì)應(yīng)表現(xiàn)層的Bean
@Service: @Service對(duì)應(yīng)的是業(yè)務(wù)層Bean
@ Repository:@Repository對(duì)應(yīng)數(shù)據(jù)訪問層Bean
@Autowired: @Autowired 根據(jù)bean 類型從spring 上線文中進(jìn)行查找,注冊(cè)類型必須唯一
@RequestMapping:@RequestMapping 可以聲明到類或方法上
@RequestParam
10、Spring有幾種配置方式?
(1)基于xml的配置
(2)基于注解額配置
(3)基于java的配置