spring面試問題
Q1。什麼是spring?
Spring本質上是一個輕量級的整合框架,可用於用Java開發企業應用程式。
Q2。命名Spring框架的不同模組。
一些重要的Spring Framework模組是:
- Spring Context –用於依賴注入。
- Spring AOP –用於面向方面的程式設計。
- Spring DAO –使用DAO模式進行資料庫操作
- Spring JDBC –用於JDBC和DataSource支援。
- Spring ORM –對ORM工具的支援,例如Hibernate
- Spring Web Module –用於建立Web應用程式。
- Spring MVC –用於建立Web應用程式,Web服務等的Model-View-Controller實現。
Q3。列出基於註釋的Spring配置中的一些重要註釋。
重要的註釋是:
- @Required
- @Autowired
- @Qualifier
- @Resource
- @PostConstruct
- @PreDestroy
Q4。在Spring中解釋Bean並列出Spring Bean的不同範圍。
Bean是構成Spring應用程式主幹的物件。它們由Spring IoC容器管理。換句話說,bean是一個由Spring IoC容器例項化,組裝和管理的物件。
Spring bean中定義了五個範圍。
- Singleton:將為每個容器建立一個bean例項。這是spring bean的預設範圍。在使用此範圍時,請確保spring bean沒有共享的例項變數,否則可能會導致資料不一致問題,因為它不是執行緒安全的。
- 原型:每次請求bean時都會建立一個新例項。
- 請求:這與原型範圍相同,但是應用於Web應用程式。將為每個HTTP請求建立一個新的bean例項。
- 會話:容器將為每個HTTP會話建立一個新bean。
- Global-session:這用於為Portlet應用程式建立全域性會話Bean。
Q5。解釋DispatcherServlet和ContextLoaderListener的角色。
DispatcherServlet基本上是Spring MVC應用程式中的前端控制器,因為它載入了Spring bean配置檔案並初始化所有已配置的bean。如果啟用了註釋,它還將掃描軟體包以配置任何使用@ Component,@ Controller,@ Repository或@Service註釋進行註釋的bean。
另一方面,ContextLoaderListener是在Spring根目錄中啟動和關閉WebApplicationContext的偵聽器。它的一些重要功能包括將Application Context的生命週期與ServletContext的生命週期繫結在一起,並自動建立ApplicationContext。
Q6。建構函式注入和setter注入之間有什麼區別?
沒有。 | 建構函式注入 | setter注射 |
---|---|---|
1) | 無區域性注入 | 部分注射 |
2) | 不覆蓋setter屬性 | 如果定義了建構函式,則重寫它們。 |
3) | 如果發生任何修改,則建立一個新例項 | 如果更改屬性值,則不會建立新例項 |
4) | 對於太多的屬性更好 | 更好的一些屬性。 |
Q7。spring的自動注入模式是什麼?什麼是自動裝配模式?
自動裝配使程式設計師能夠自動注入Bean。我們不需要編寫顯式的注入邏輯。 讓我們看看使用依賴注入來注入bean的程式碼。
<bean id = “ emp” class = “ com.javatpoint.Employee” autowire = “ byName” />
自動裝配模式如下:
沒有。 | 模式 | 描述 |
---|---|---|
1) | 沒有 | 這是預設模式,這意味著未啟用自動裝配。 |
2) | 按名字 | 根據屬性名稱注入bean。它使用setter方法。 |
3) | 按型別 | 根據屬性型別注入bean。它使用setter方法。 |
4) | 建構函式 | 它使用建構函式注入bean |
Q8。如何在Spring MVC Framework中處理異常?
Spring MVC Framework提供了以下方法來幫助我們實現可靠的異常處理。
基於控制器:
我們可以在控制器類中定義異常處理程式方法。我們所需要做的就是使用@ExceptionHandler註釋對這些方法進行註釋。
全域性異常處理程式:
異常處理是一個跨領域的問題,Spring提供了@ControllerAdvice批註,我們可以將其與任何類一起使用來定義全域性異常處理程式。
HandlerExceptionResolver實現:
對於一般的異常,大多數時候我們提供靜態頁面。Spring Framework提供了HandlerExceptionResolver介面,我們可以通過該介面來建立全域性異常處理程式。這種定義全域性異常處理程式的其他方法背後的原因是,Spring框架還提供了預設實現類,我們可以在我們的Spring bean配置檔案中定義這些預設實現類,以獲得Spring框架異常處理的好處。
Q9。您使用了哪些重要的Spring批註?
我在專案中使用的一些Spring註釋是:
@Controller –用於Spring MVC專案中的控制器類。
@RequestMapping –用於在控制器處理程式方法中配置URI對映。這是一個非常重要的註釋,因此您應該閱讀Spring MVC RequestMapping註釋示例
@ResponseBody –用於傳送物件作為響應,通常用於傳送XML或JSON資料作為響應。
@PathVariable –用於將動態值從URI對映到處理程式方法引數。
@Autowired –用於自動裝配Spring bean中的依賴項。
@Qualifier –帶有@Autowired註釋,以避免在存在多個bean型別的例項時造成混淆。
@Service –用於服務類。
@Scope –用於配置Spring bean的範圍。
@ Configuration,@ ComponentScan和@Bean –用於基於Java的配置。
AspectJ註釋,用於配置方面和建議,@ Aspect,@ Before,@ After,@ Around,@ Pointcut等。
Q10。如何整合Spring和Hibernate框架?
如果您使用的是SessionFactory提供當前會話的Hibernate 3+,那麼我們可以使用Spring ORM模組來整合Spring和Hibernate框架,那麼您應該避免使用HibernateTemplate或HibernateDaoSupport類,而最好使用帶有依賴項注入的DAO模式進行整合。
另外,Spring ORM還提供了對使用Spring宣告式事務管理的支援,因此您應該利用它,而不是使用休眠的樣板程式碼進行事務管理。
Q11。命名Spring支援的事務管理的型別。
Spring支援兩種型別的事務管理。他們是:
- 程式化事務管理: 在這種情況下,藉助程式設計來管理事務。它為您提供了極大的靈活性,但是很難維護。
- 宣告式事務管理: 在此,事務管理與業務程式碼分開。僅註釋或基於XML的配置用於管理事務。
更多精彩內容,請關注公眾號"Java架構師社群",公眾內回覆1024可免費獲得3T架構師資源。公眾號內回覆進群,邀請您進群交流。