1) 談談你對spring 的認識

1.方便解耦,簡化開發

通過Spring 提供的IoC 容器,可以將對象之間的依賴關係交由Spring 進行控制,避免硬編碼

所造成的過度程序耦合。

Controller

@Autowired

private UserService userService;

2.AOP 編程的支持

通過Spring 提供的AOP 功能,方便進行面向切面的編程,如性能監測、事務管理、日誌記

錄等。

3.聲明式事務的支持

4.方便集成各種優秀框架

5.降低Java EE API 的使用難度

如對JDBC,JavaMail,遠程調用等提供了簡便封封裝

2) 什麼是IOC 和DI

IOC 控制反轉:說的是創建對象實例的控制權從代碼控制剝離到IOC 容器控制,側重於原理。

DI 依賴注入:說的是創建對象實例時,為這個對象注入屬性值或其它對象實例,側重於實

現。

控制反轉是一種思想,如何實現控制反轉呢,注入是一種實現手段。

在Java 中依然注入有以下三種實現方式:

1. 構造器注入

2. Setter 方法注入

3. 介面注入

Spring 中BeanFactory 介面是Spring IoC 容器的核心介面。ApplicationContex 介面對

BeanFactory(是一個子介面)進行了擴展.我們常用的ClassPathXmlApplicationContext

Web.xml 監聽器來負責啟動初始化spring 容器

3) Spring 有幾種配置方式

基於XML 和基於註解,管理依賴用註解,事務用XML

1,配置數據源

2,配置事務管理器,引用數據源

3,配置事務策略,引用事務管理器

4,配置事務的AOP,設置哪些類的哪些方法需要應用這個事務策略

4) Spring Bean 的作用域有哪些?

singleton 這種bean 範圍是默認的,這種範圍確保不管接受到多少個請求,每個容器中只有

一個bean 的實例,單例的模式由bean factory 自身來維護。

prototype 原形範圍與單例範圍相反,為每一個bean 請求提供一個實例

實際的應用場景:

Service,dao---單例

Struts2 action---多例prototype

5) Spring 中的單例Bean 是線程安全的嗎?

Spring框架並沒有對單例bean 進行任何多線程的封裝處理。關於單例bean 的線程安全和並

發問題需要開發者自行去搞定。但實際上,大部分的Spring bean 並沒有可變的狀態(比如

Service 類和DAO 類),所以在某種程度上說Spring 的單例bean 是線程安全的。如果你的bean

有多種狀態的話(比如View Model 對象),就需要自行保證線程安全。

有狀態的bean,無狀態的bean6) 什麼是bean 的裝配

6) 什麼是bean 的裝配

裝配,或bean 裝配是指在Spring 容器中把bean 組裝到一起,前提是容器需要知道bean 的

依賴關係,如何通過依賴注入來把它們裝配到一起。

例子:

就是把dao 對象注入給service 對象,這個過程就叫裝配

7) Spring 的自動裝配機制

在Spring 框架中,在配置文件中設定bean 的依賴關係是一個很好的機制,Spring 容器還可

以自動裝配合作關係bean 之間的關聯關係。

一種是在XML 的配置文件中,

<bean id="userBiz" class="com.qianfeng.biz.impl.UserBizImpl" autowire="byName"/>

加上autowire="byName" 或autowire="byType"

一種是註解的方式,<context:annotation-config />,然後在類中用@Autowired 即可

@Controller

Public class UserController{

@AutoWried

private IUserService userService;

}

@Service

Public class UserServiceImpl implements IUserService{

@Autowried

Private IUserDao userDao;

}

8) 自動裝配,byName 和byType 的區別

byName:該選項可以根據bean 名稱設置依賴關係。當向一個bean 中自動裝配一個屬性時,

容器將根據bean 的名稱自動在在配置文件中查詢一個匹配的bean。如果找到的話,就裝配

這個屬性,如果沒找到的話就報錯。

byType:該選項可以根據bean 類型設置依賴關係。當向一個bean 中自動裝配一個屬性時,

容器將根據bean 的類型自動在在配置文件中查詢一個匹配的bean。如果找到的話,就裝配

這個屬性,如果沒找到的話就報錯。

讀者福利(學習分享)

我經過多年的收藏目前也算收集到了一套完整的學習資料以及高清詳細的Java架構進階學習導圖及筆記免費分享給大家,希望對想成為架構師的朋友有一定的參考和幫助!下面是部分資料截圖,誠意滿滿:特別適合有開發經驗的Java程序員們學習。這些資料整理也花費了蠻多時間,覺得不錯的可以點個贊關注支持下以後還會分享更多精選的乾貨!

有需要的朋友可以關注這個知乎專欄獲取資料免費領取方式!(記得看簡介哦)

小朔哥的Java路呀?

zhuanlan.zhihu.com圖標
推薦閱讀:

相关文章