1. 程式人生 > >Spring面試問題和答案

Spring面試問題和答案

1.Spring框架是什麼?

Spring框架是一個開放原始碼框架,用於解決企業應用程式開發的複雜性。Spring框架的主要優勢之一是它的分層架構,它允許您對所使用的元件進行選擇。Spring的主要模組是Spring核心、Spring AOP和Spring MVC。

2.Spring框架的主要特性是什麼?
輕量級:

在規模和透明度方面,spring是輕量級的。spring框架的基本版本大約是1 MB。處理開銷也可以忽略不計.

控制反轉 (IOC):
依賴注入或控制反轉的基本概念是,程式設計師不需要建立物件,而是描述如何建立物件.

面向方面(AOP):
Spring支援面向方面的程式設計。
面向方面的程式設計是指將次要或支援功能與主程式的業務邏輯隔離的程式設計範例。AOP是一種很有前途的技術,用於分離橫切關注點,這在面向物件程式設計中通常很難做到。應用程式的模組化以這種方式增加,並且它的維護變得更加容易。

容器:


Spring包含並管理應用程式物件的生命週期和配置。

MVC框架:
Spring提供了基於核心Spring功能的MVC web應用程式框架。這個框架可以通過策略介面進行高度的可配置,並且可以容納多個檢視技術,如JSP、Velocity、tile、iText和POI。

事務管理:
Spring框架為事務管理提供了一個通用的抽象層。這使得開發人員可以新增可插拔的事務管理器,並且可以輕鬆地在不處理底層問題的情況下事務。

JDBC的異常處理:

Spring的JDBC抽象層提供了一個有意義的異常層次結構,它簡化了錯誤處理策略。與Hibernate、JDO和iBATIS的整合:Spring提供了與Hibernate、JDO和iBATIS的最佳整合服務。

3.解釋Spring的主要模組?
Spring AOP:

Spring的關鍵元件之一是AOP框架。AOP在Spring中使用:
提供宣告性的企業服務,特別是作為EJB宣告式服務的替代品。最重要的服務是宣告式事務管理,它建立在Spring的事務抽象之上。
允許使用者實現自定義的切面,補充他們使用AOP的OOP的使用。

Spring ORM:
ORM包與資料庫訪問有關。它為流行的物件關係對映api提供整合層,包括JDO、Hibernate和iBatis。

Spring Web:
Spring Web模組是Spring的一部分?s web應用程式開發堆疊,其中包括Spring MVC。

Spring DAO:
Spring的DAO(Data Access Object)支援主要用於使用JDBC、Hibernate或JDO等技術標準化資料訪問工作。

Spring Context:


此包構建在bean包之上,以增加對訊息源的支援和觀察者的設計模式支援,以及應用程式物件使用一致的API獲得資源的能力。

Spring Web MVC:
這是為web應用程式提供MVC實現的模組。

Spring Core:
核心包是Spring框架中最重要的元件。

該元件提供依賴性注入特性。BeanFactory提供了一種工廠模式,它將諸如初始化、創造和訪問物件與實際程式邏輯的訪問分離開來。

4. 什麼是Spring的依賴注入(IOC)?
依賴注入的基本概念(也稱為控制模式反轉)是指您不建立物件,而是描述如何建立物件。您不會將元件和服務直接連線到程式碼中,而是描述配置檔案中哪些元件需要哪些服務。一個容器(在Spring框架的情況下,IOC容器)負責將其連線起來。

即。在應用IoC時,物件在建立時被一些外部實體賦予它們依賴關係,這些實體負責協調系統中的每個物件。也就是說,依賴項被注入到物件中。因此,IoC意味著對於物件如何獲得對協作物件的引用的責任倒置。

5. 在Spring中注入依賴性的方法是什麼?
在Spring中有兩種方法來進行依賴性注入。
通過setter方法的依賴注入.

依賴注入通過建構函式.

6. 在Spring中Bean是什麼?
由Spring IOC容器管理的普通POJO類被稱為Spring bean。它是Spring應用程式的核心部分.
例如:

<bean id="countryBean" class="com.micai.spring.model.Country">
	<property name="countryName" value="India"/>
	<property name="capital" ref="CapitalBean"/>
</bean>
7. 如何在應用程式中配置Spring?
有三種方法可以做到這一點。
基於XML的配置.
基於Java的配置.

基於註釋的配置。

8. 什麼是基於Spring XML的配置?
在基於Spring XML的配置中,您定義了XML檔案中的所有相依性。您可以在XML檔案中定義所有bean,並且所有依賴項都是使用這些XML檔案讀取的.
例如 :

Sample applicationContext.xml file

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
  <bean id="CountryBean" class="com.micai.spring.model.Country">
      <property name="countryName" value="India"/>
      <property name="capital" ref="CapitalBean"/>
  </bean>
  <bean id="CapitalBean" class="com.micai.spring.model.Capital">
      <property name="capitalName" value="Delhi"/>
  </bean>
</beans>
9. 什麼是Spring java的配置?

在Spring Java的配置中,您只使用Java類注入所有依賴項。你可以使用@Configuaration和@bean註解來完成它.

package com.micai.spring.config;

import com.micai.spring.model.Country;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 描述:
 * <p>
 *
 * @author: 趙新國
 * @date: 2018/5/29 13:51
 */
@Configuration
public class ApplicationConfiguration {

    @Bean(name = "countryObj")
    public Country getCountry() {
        return new Country("India");
    }
}

上面的檔案等價於下面的spring配置xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context.xsd"> 
<context:annotation-config/>  
 <bean id="countryObj" class="com.micai.spring.model.Country" >
  <property name="countryName" value="India"/>
 </bean>
</beans>

要獲得bean到應用程式上下文,您需要使用下面的程式碼

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
Country country = (Country) applicationContext.getBean("countryObj");
10. 什麼是spring註解的配置?
您也可以通過註釋來進行依賴注入,而不是XML配置。你可以使用註解來定義bean的自動裝配。您可以使用@Component,@Repository,@Service和 @Controller註釋來在Spring應用程式中配置bean。

在預設情況下,註釋連線不會開啟。你需要開啟它 :

<?xml version="1.0" encoding="UTF-8"?>
<bean> 
<context:annotation-config/>  
</beans>

一旦您輸入了以上程式碼,您就可以開始在類、欄位或方法上使用註釋了.

11. 在Spring中不同的bean範圍是什麼?
在spring中支援的bean範圍有5種類型:
singleton – 在每個Spring IoC容器中對單個物件例項進行單一bean定義.
prototype – 每次請求時返回一個新的bean例項
request – 每個HTTP請求返回一個bean例項.
session – 每個HTTP會話返回一個bean例項.

globalSession – 在每個全域性HTTP會話中返回單個bean例項.

12. 在Spring中,bean的預設範圍是什麼?

singleton是Spring中bean的預設範圍。如果你想要不同的範圍,你必須顯式地改變一個bean的範圍.

13. 什麼是ApplicationContext,它的功能是什麼?
ApplicationContext是嚮應用程式提供配置資訊的中心介面.

一個ApplicationContext提供了以下功能:
Bean工廠方法,從ListableBeanFactory繼承。這就避免了應用程式使用單例的需求.
解決訊息、支援國際化的能力。從MessageSource介面繼承的.
以通用的方式載入檔案資源的能力。從ResourceLoader介面繼承的.
釋出事件的能力。實現必須提供一種註冊事件監聽器的方法.

繼承父上下文中的繼承。後代上下文中的定義總是優先考慮的。這意味著,例如,一個單例上下文可以被整個web應用程式使用,而每個servlet都有自己的子上下文,獨立於任何其他servlet.

14. 如何在Spring中注入集合?

您可以使用列表和value標記初始化集合:

<bean id="country" class="com.micai.spring.model.Country">
    <property name="countryName" value="India"/>
    <property name="capitalList">
        <list>
            <value>aaa</value>
            <value>bbb</value>
            <value>ccc</value>
            <value>ddd</value>
        </list>
    </property>
</bean>
15. Spring的自動裝配是什麼意思?

在Spring框架中,您可以自動地用自動連線功能將bean連線起來。為了啟用它,只需定義“autowire”屬性,Spring容器可以在不使用的情況下自動連線協作bean之間的關係,也可以幫助減少XML配置的數量。

<bean id="country" class="com.micai.spring.model.Country" autowire="byName">
16. 什麼是Spring支援的不同的自動裝配模式?
有以下的自動裝配模式,可以用來指示Spring容器使用自動連線進行依賴注入.
no:
預設情況下,沒有自動連線,通過“ref”屬性手動設定它,就像我們通過settor方法post在依賴注入中所做的那樣.
byName:
由屬性名自動裝配。Spring容器檢視在XML配置檔案中將autowire屬性設定為byName的bean的屬性,並試圖將其與XML配置檔案中的bean名稱相匹配.
byType:
通過屬性資料型別自動裝配。Spring容器檢視在XML配置檔案中將autowire屬性設定為byType的bean的屬性。然後,如果它的型別與配置檔案中的一個bean名稱相匹配,那麼它就會嘗試匹配並連線一個屬性。如果有不止一個這樣的bean存在,就會丟擲一個致命的異常.
contructor:
建構函式引數中的byType模式.
autodetect:
Spring首先嚐試通過構造器使用autowire,如果它不起作用,Spring嘗試通過byType自動連線.

17. Spring AOP是什麼?

面向方面的程式設計是一種類似於面向物件程式設計的程式設計正規化。面向物件程式設計的關鍵單元是類,類似於AOP的關鍵單元是方面。方面支援諸如事務管理之類的關注點的模組化,它跨越多個類和型別。它也稱為橫切關注點.

18. 在Spring AOP中,什麼是方面、建議、連線點和切入點?

Aspect: 方面是一個實現跨越不同類的關注點的類,比如logging。它只是一個名字.
Joint Point : 它是程式執行的一個點,例如方法的執行。在Spring AOP中,連線點總是表示方法執行.
Advice : 由方面在特定的連線點上採取的行動。例如:在執行getEmployeeName()方法之前,put logging。這裡,我們在建議之前使用.

Pointcut : 切入點是決定在匹配的連線點上執行建議的表示式。Spring在預設情況下使用AspectJ切入點表示式語言.

19. 在Spring中什麼@Qualifier註解?

你可以在XML配置中有多個相同型別的bean但是你想要自動連線其中一個,所以@Qualifier消除了由@Autowired建立的混亂,通過宣告哪個bean是自動連線的。

20. 在Spring中什麼@Required註解?

這個註釋僅僅表明受影響的bean屬性必須在配置時填充:要麼通過bean定義中的顯式屬性值,要麼通過自動裝配。如果受影響的bean屬性沒有被填充,容器將丟擲異常;這允許出現急切和顯式的故障,避免NullPointerExceptions或稍後的類似。

假設你有一個非常大的應用程式,你會得到NullPointerExceptions,因為需要的依賴沒有被注入,所以很難找出哪裡出了問題。這個註釋幫助我們除錯.

相關推薦

Spring面試問題答案

1.Spring框架是什麼?Spring框架是一個開放原始碼框架,用於解決企業應用程式開發的複雜性。Spring框架的主要優勢之一是它的分層架構,它允許您對所使用的元件進行選擇。Spring的主要模組是Spring核心、Spring AOP和Spring MVC。2.Spri

JAVA面試--史上最全 69 道 Spring 面試題答案

開發十年,就只剩下這套架構體系了! >>>   

40個Java集合面試問題答案

dex 生產 含義 locking rul 有意義 remove 可用 dal 1.Java集合框架是什麽?說出一些集合框架的優點? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:Vector、Stack、HashTable和Array。隨著集合的廣泛使用,Ja

Spring面試題答案

tar aos 好處 責任 strong enc 進行 需求 getter Spring 概述 1. 什麽是spring? Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。Sprin

69道Spring面試題答案

clas 完成 上傳 stp 集合 xml配置 很好 單元測試 簡潔 Spring 概述 1. 什麽是spring? Spring 是個Java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。Spring 框架

史上最全 69 道 Spring 面試題答案

str 路徑 輕量 情況下 list 開發 erp throw 解決方案 史上最全 69 道 Spring 面試題和答案 目錄Spring 概述依賴註入Spring beansSpring註解Spring數據訪問Spring面向切面編程(AOP)Spring MVC S

memcached面試26題答案

Memcached是什麼,有什麼作用? Memcached是一個開源的,高效能的記憶體綬存軟體,從名稱上看Mem就是記憶體的意思,而Cache就是快取的意思。Memcached的作用:通過在事先規劃好的記憶體空間中臨時綬存資料庫中的各類資料,以達到減少業務對資料庫的直接高併發訪問,從而達到提升資料庫的訪問效

史上最全Spring面試71題與答案

1.什麼是spring? Spring是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴充套件是針對構建J2EE平臺的web應用。Spring框架目標是簡化Java企業級應用開發,並通過POJO為基礎的程式設計模型促進良好的程式設計習慣。 2.使用Spring框架的好處

web面試問題答案,你值得一看

web面試問題和答案,你值得看看1)什麼是Web服務? Web服務是用於通過網路傳送兩個裝置的軟體系統。 2)Web服務如何工作? Web服務用於通過使用開放標準(如HTML,XML,WSDL和SOAP)在各種應用程式之間進行通訊。您可以在Solaris上構建基於Java的Web服務,該

Struts2、Hibernate、Spring面試筆試題(含答案

Hibernate工作原理及為什麼要用?  原理:  1.讀取並解析配置檔案  2.讀取並解析對映資訊,建立SessionFactory  3.開啟Sesssion  4.建立事務Transation 

經典Spring 面試題答案

  目錄 Spring 概述 依賴注入 Spring beans Spring註解 Spring資料訪問 Spring面向切面程式設計(AOP) Spring MVC Spring 概述   1. 什麼是spring? S

阿里p8架構師分享:Java經典基礎與高階面試36題答案(下)

19.為什麼集合類沒有實現Cloneable和Serializable介面? 克隆(cloning)或者是序列化(serialization)的語義和含義是跟具體的實現相關的。因此,應該由集合類的具體實現來決定如何被克隆或者是序列化。 20.什麼是迭代器(Iterator)? Itera

MySQL面試50題答案

1)Mysql中有哪幾種鎖? 1.表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。 2.行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。 3.頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界

面試中關於Spring AOP代理模式的那些事

我們知道,Spring 中 AOP 是一大核心技術,也是面試中經常會被問到的問題,最近我在網上也看到很多面試題,其中和 Spring AOP 相關的就有不少,這篇文章主要來總結下相關的技術點,希望對大家有用。 0. 幾個常見的問題 針對這一塊的東西,一般下面幾個問題面試官問的比較多: Spr

69 個經典 Spring 面試題答案

Spring 概述 1. 什麼是spring? Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴充套件是針對構建J2EE平臺的web應用。Spring 框架目標是簡化Java企業級應用開發,並通過POJO為基礎

面試題:70道Spring面試題答案

轉自:搜雲庫 本文包括以下部分 Spring 概述 Spring 依賴注入 Spring beans Spring 註解 Spring 資料訪問 Spring 面向切面程式設計(AOP) Spring M

精選多執行緒面試題目答案,對多執行緒理解不是很到位的快來看了~

多執行緒,相信對於很多小白來說是噩夢一般的東西吧,別怕,接下來我們就來把多執行緒的一些面試題一一解讀,希望讀完這篇文章之後,能夠對多執行緒有一個更深入的瞭解。 1. 多執行緒使用的優缺點? 優點: (1)多執行緒技術使程式的響應速度更快 (2)當前沒有進行處理的任務可以將處理器時間讓

Java經典基礎與高階面試36題答案

1.”static”關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法? “static”關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的例項變數的情況下被訪問。 Java中static方法不能被覆蓋,因為方法覆

java面試題--40個Java集合面試問題答案

原文連結:https://www.cnblogs.com/tlnshuju/p/7324703.html 英文原文:http://www.javacodegeeks.com/2013/02/40-java-collections-interview-questions-and

求求你,下次面試別再問我什麼是 Spring AOP 代理了!

作者 | 倪升武 責編 | 胡巍巍 我們知道,Spring 中 AOP 是一大核心技術,也是面試中經常會被問到的問題,最近我在網上也看到很多面試題,其中和 Spring AOP 相關的就有不少,這篇文章主要來總結下相關的技術點,希望對大家有用