javascript
关于Spring的笔试题(一)
1.Spring框架優點?(面試題)
首先說一下為什么要使用Spring框架:在傳統的Java開發中具有高度的耦合性,一個項目中或者一個邏輯功能的實現時,往往一個對象需要依賴很多的對象來完成自己的操作,這樣就造成了兩個類的依賴關系太強,改一個地方,往往牽扯很多類牽扯大量的代碼。 此時Spring就被開發出來, 它可以管理對象和對象之間的依賴關系,我們不需要自己建立對象,把這部分工作全部轉交給容器完成,具有低耦合,對代碼沒有侵略性,對服務器沒有依賴性特點的框架。舉個例子:我們在沒有使用Spring之前,在service層引用Dao層的對象時,需要在service層new一個Dao層的對象,這樣曾與層之間的依賴性就很嚴重。而使用Spring框架之后,只需要在xml文件中配置就可以了,至于對象是怎么創建的,關系是怎么組合的都交給了spring框架去實現。
Spring框架優點:
方便解耦,簡化開發:
Spring就是一個大工廠,可以將所有對象創建和依賴關系維護,交給Spring管理(代碼沒有入侵性)
AOP編程的支持:
Spring提供面向切面編程,可以方便的實現對程序進行權限攔截、運行監控等功能(便于功能擴展)
聲明式事務的支持:
只需要通過配置就可以完成對事務的管理,而無需手動編程
方便程序的測試:
Spring對Junit4支持,可以通過注解方便的測試Spring程序
方便集成各種優秀框架:
Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
降低JavaEE API的使用難度:
Spring 對JavaEE開發中非常難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大降低
--------筆記
2.?IOC和DI分別是什么?區別?(面試題)
IOC:控制反轉是把傳統上由程序代碼直接操控的對象的調用權交給容器,通過容器來實現對象組件的裝配和管理。所謂的"控制反轉"就是對組件對象控制權的轉移,從程序代碼本身轉移到了外部容器,由容器來創建對象并管理對象之間的依賴關系。
DI:Spring通過控制反轉(IOC)的技術促進了松耦合。當應用了IOC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象,是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
簡單說就是:IoC(控制反轉):本來需要你自己new對象,現在交給spring容器幫你new對象,權利從你手里反轉到容器手里了
DI(依賴注入):(依賴)就是依賴spring提供的容器,(注入)類中屬性的值通過容器注入進去,或者通過引用為屬性注入值
通過IOC反轉控制DI依賴注入完成各個層之間的注入,使得層與層之間實現完全脫耦,增加運行效率利于維護。
3.Bean的實例化方式?
1.?使用構造器實例化:
這種實例化的方式可能在開發中用到的是最多的,因為在xml文件中配置簡單并且也不需要額外的工廠類來實現。
要注意的是:要實例化的類中如果有構造器的話,一定要有一個無參構造器。
?
?
2.?使用靜態工廠方法實例化:
通過這種方式進行實例化就要具備兩個條件:
(一)、要有工廠類及其工廠方法;(二)、工廠方法是靜態的。
?
?
? id是實例化的對象的名稱,class是工廠類,也就實現實例化類的靜態方法所屬的類,factory-method是實現實例化類的靜態方法。
?
3.?使用實例化工廠方法實例化:
這個方法和靜態工廠方法不同之處在于使用該實例化方式工廠方法不需要是靜態的,但是在spring的配置文件中需要將工廠進行配置,還需要配置bean
?
?
?這里需要配置兩個bean,第一個bean使用的構造器方法實例化工廠類,第二個bean中的id是實例化對象的名稱,factory-bean對應的被實例化的工廠類的對象名稱,也就是第一個bean的id,factory-method是非靜態工廠方法。
?
4.Bean的屬性注入方式有哪些?
1.?構造方法注入
假設我有一個User4,如下:
?
User4中有一個變量叫做username,我希望通過構造方法給它注入值,那我在User4中提供相應的構造方法即可,然后在Spring的配置文件中做如下配置即可:
?
?
2.?set方法注入
假設我有一個User5,如下:
?
通過set方法注入,那么在User5中我們首先要提供set方法,然后在Spring配置文件中做如下配置即可:
?
?
3.?p名稱空間注入
首先,我們需要在Spring配置的bean節點中添加p名稱空間,如下:
?
現在假設我有一個User6,如下:
?
User6中有一個username屬性,為屬性提供set方法,在配置文件中通過p名稱空間進行注入:
?
直接在bean節點中通過p:username執行相應的值即可。
from:https://blog.csdn.net/weixin_41768263/article/details/80350779
總結
以上是生活随笔為你收集整理的关于Spring的笔试题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Groovy官方指南》目录
- 下一篇: Spring 中 Bean 的生命周期