javascript
spring常见面试问题_Spring面试问题
spring常見面試問題
另外,請查看我們最新的文章69Spring面試問題與解答–最終清單 。
1)什么是春天?
回答:
Spring是控件和面向方面的容器框架的輕量級反轉。
2)解釋春天?
回答:
- 輕巧:在尺寸和透明度方面, Spring是輕巧的。 spring框架的基本版本約為1MB。 而且處理開銷也可以忽略不計。
 - 控制反轉(IoC):使用控制反轉技術在彈簧中實現松耦合。 對象提供其依賴關系,而不是創建或尋找依賴對象。
 - 面向方面(AOP): Spring支持面向方面的編程,并通過將應用程序業務邏輯與系統服務分開來實現緊密的開發。
 - 容器: Spring包含并管理應用程序對象的生命周期和配置。
 - 框架: Spring提供了大多數內部功能,其余的代碼留給了開發人員。
 
3)Spring框架有哪些不同的模塊?
回答:
- 核心容器模塊
 - 應用程序上下文模塊
 - AOP模塊(面向方面??的編程)
 - JDBC抽象和DAO模塊
 - O / R映射集成模塊(對象/關系)
 - 網絡模塊
 - MVC框架模塊
 
4)Spring框架的結構是什么?
回答:
5)什么是核心容器模塊?
回答:
該模塊提供spring框架的基本功能。 在這個模塊中, BeanFactory是任何基于Spring的應用程序的核心。 整個框架都建立在該模塊的頂部。 這個模塊是Spring容器 。
6)什么是應用程序上下文模塊?
回答:
Application上下文模塊使spring成為框架。 該模塊擴展了BeanFactory的概念,為國際化(I18N)消息,應用程序生命周期事件和驗證提供支持。 該模塊還提供許多企業服務,例如JNDI訪問, EJB集成 ,遠程處理和調度。 它還為其他框架提供支持。
7)什么是AOP模塊?
回答:
AOP模塊用于為支持Spring的應用程序開發方面。 AOP聯盟已經提供了很多支持,以確保Spring和其他AOP框架之間的互操作性。 該模塊還向Spring介紹了元數據編程。 使用Spring的元數據支持,我們將能夠在源代碼中添加注釋,以指示Spring在何處以及如何應用方面。
8)什么是JDBC抽象和DAO模塊?
回答:
使用此模塊,我們可以使數據庫代碼保持簡潔明了,并防止由于關閉數據庫資源失敗而導致的問題。 在此模塊中,購買了由多個數據庫服務器給出的錯誤消息之上的有意義異常的新層。 另外,該模塊使用Spring的AOP模塊為Spring應用程序中的對象提供事務管理服務。
9)什么是對象/關系映射集成模塊?
回答:
通過提供ORM模塊,Spring還支持在純JDBC上使用對象/關系映射(ORM)工具。 Spring提供的支持可以綁定到幾個流行的ORM框架 ,包括Hibernate , JDO和iBATIS SQL Maps 。 Spring的事務管理支持所有這些ORM框架以及JDBC 。
10)什么是Web模塊?
回答:
該模塊建立在應用程序上下文模塊的基礎上,提供適用于基于Web的應用程序的上下文。 該模塊還包含對一些面向Web的任務的支持,例如透明地處理文件上傳的多部分請求以及將請求參數以編程方式綁定到業務對象。 它還包含與Jakarta Struts的集成支持。
11)什么是Spring MVC?
回答:
Spring帶有用于構建Web應用程序的功能齊全的MVC框架。 盡管Spring可以很容易地與Struts等其他MVC框架集成,但是Spring的MVC框架使用IoC可以將控制器邏輯與業務對象完全分離。 它還允許您以聲明方式將請求參數綁定到業務對象。 它還可以利用Spring的其他任何服務,例如I18N消息傳遞和驗證。
12)什么是BeanFactory?
回答:
BeanFactory是工廠模式的實現,該模式應用控制反轉將應用程序的配置和依賴項與實際應用程序代碼分開。
13)什么是AOP聯盟?
回答:
AOP聯盟是一個開源項目,其目的是通過定義一組通用的接口和組件來促進AOP的采用以及不同AOP實現之間的互操作性。
14)什么是Spring配置文件?
回答:
Spring配置文件是一個XML文件。 該文件包含類信息,并描述了如何配置和相互引入這些類。
15)一個簡單的spring應用程序包含什么?
回答:
這些應用程序就像任何Java應用程序一樣。 它們由幾個類組成,每個類在應用程序中執行特定的目的。 但是這些類是通過XML文件配置并相互引入的。 這個XML文件描述了如何配置這些類,稱為Spring配置文件。
16)什么是XMLBeanFactory?
回答:
BeanFactory在Spring中有許多實現。 但是,最有用的工具之一是org.springframework.beans.factory.xml.XmlBeanFactory ,它根據XML文件中包含的定義加載其bean。 要創建XmlBeanFactory ,請將java.io.InputStream傳遞給構造函數。 InputStream將向工廠提供XML。 例如,以下代碼段使用java.io。 FileInputStream為XmlBeanFactory提供bean定義XML文件。
BeanFactory factory =新的XmlBeanFactory (新的FileInputStream (“ beans.xml”));
要從BeanFactory中檢索Bean,請通過傳遞要檢索的Bean的名稱來調用getBean()方法。
MyBean myBean =(MyBean)工廠。 getBean (“ myBean”);
17)Spring框架中有哪些重要的ApplicationContext實現?
回答:
- ClassPathXmlApplicationContext –此上下文從位于類路徑中的XML文件中加載上下文定義,將上下文定義文件視為類路徑資源。
 - FileSystemXmlApplicationContext –此上下文從文件系統中的XML文件加載上下文定義。
 - XmlWebApplicationContext –此上下文從Web應用程序中包含的XML文件中加載上下文定義。
 
18)解釋Spring框架中的Bean生命周期?
回答:
19)什么是豆類接線?
回答:
在Spring容器中將bean組合在一起被稱為bean接線或接線。 在對bean進行接線時,應告訴容器需要哪些bean,以及如何使用依賴注入將它們綁定在一起。
20)如何在Spring應用程序中添加bean?
回答:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><bean id="foo" class="com.act.Foo"/><bean id="bar" class="com.act.Bar"/></beans>在bean標記中,id屬性指定bean名稱,而class屬性指定完全限定的類名。
21)什么是單例bean,如何創建原型bean?
回答:
在spring框架中定義的bean是單例bean。 如果指定為true,則bean標記中有一個名為“ singleton”的屬性,則bean成為單例;如果設置為false,則bean成為原型bean。 默認情況下,它設置為true。 因此,默認情況下,spring框架中的所有bean都是單例bean。
<beans><bean id="bar" class="com.act.Foo" singleton=”false”/></beans>22)重要的bean生命周期方法是什么?
回答:
bean有兩種重要的生命周期方法。 第一個是安裝程序,當將Bean裝入容器時調用。 第二種方法是拆卸方法,當從容器中卸載bean時會調用該方法。
23)如何覆蓋bean的默認生命周期方法?
回答:
bean標記具有兩個更重要的屬性,您可以使用它們定義自己的自定義初始化和銷毀??方法。 在這里,我展示了一個小示范。 兩個新方法fooSetup和fooTeardown將添加到Foo類。
<beans><bean id="bar" class="com.act.Foo" init-method=”fooSetup” destroy=”fooTeardown”/></beans>24)什么是內豆?
回答:
在對bean進行接線時,如果將bean元素直接嵌入到屬性標簽中,則該bean被稱為Inner Bean。 該bean的缺點是無法在其他任何地方重用。
25)注入豆有哪些不同類型?
回答:
有兩種類型的豆類注射。
26)什么是自動接線?
回答:
您可以根據需要為咖啡豆接線。 但是spring框架也可以為您完成這項工作。 它可以自動將相關的bean連接在一起。 您所要做的只是將bean標簽的autowire屬性設置為autowire類型。
<beans><bean id="bar" class="com.act.Foo" Autowire=”autowire type”/></beans>27)有哪些不同類型的Autowire類型?
回答:
可以通過四種不同類型進行自動裝配。
- 按名字
 - 按類型
 - 構造函數
 - 自動偵測
 
28)與偵聽器相關的事件有哪些不同類型?
回答:
有很多與spring框架的ApplicationContext相關的事件。 所有事件都是org.springframework.context.Application-Event的子類。 他們是
- ContextClosedEvent –在關閉上下文時觸發。
 - ContextRefreshedEvent –在初始化或刷新上下文時觸發。
 - RequestHandledEvent –當Web上下文處理任何請求時將觸發此事件。
 
29)什么是方面?
回答:
一個方面是您正在實現的跨領域功能。 這是模塊化應用程序的一個方面。 方面的一個示例是日志記錄。 記錄是整個應用程序所必需的。 但是,由于應用程序傾向于基于功能分解為多個層,因此通過繼承重用日志記錄模塊沒有任何意義。 但是,您可以創建一個日志記錄方面,并使用AOP在整個應用程序中應用它。
30)什么是聯合點?
回答:
連接點是應用程序執行過程中可以插入方面的點。此點可以是調用方法,拋出異常或什至修改字段。 這些是可以將方面的代碼插入到應用程序的常規流程中以添加新行為的要點。
31)什么是建議?
回答:
咨詢是一個方面的實施。 這就像告訴您的應用程序新行為一樣。 通常,建議在連接點處插入到應用程序中。
32)什么是切入點?
回答:
切入點是定義建議應在哪些連接點應用的東西。 可以在AOP框架支持的任何連接點上應用建議。 這些切入點允許您指定可以在何處應用建議。
33)什么是AOP簡介?
回答:
簡介允許用戶向現有的類添加新的方法或屬性。 然后可以將其引入到現有的類中,而不必更改類的結構,而是為他們提供新的行為和狀態。
34)什么是目標?
回答:
目標是正在建議的班級。 該類可以是第三方類,也可以是您要向其添加自定義行為的您自己的類。 通過使用AOP的概念,目標類可以將注意力集中在主要關注點上,而無需意識到正在應用的任何建議。
35)什么是代理?
回答:
代理是在將建議應用于目標對象之后創建的對象。 當您想到客戶端對象時,目標對象和代理對象是相同的。
36)編織是什么意思?
回答:
將方面應用于目標對象以創建新的代理對象的過程稱為編織。 這些方面將在指定的連接點處編織到目標對象中。
37)編織的不同點是什么?
回答:
- 編譯時間
 - 上課時間
 - 運行
 
38)Spring有哪些不同的建議類型?
回答:
- 周圍:攔截對目標方法的調用
 - Before:在調用目標方法之前調用
 - After:返回目標方法后調用
 - 拋出:目標方法拋出異常時調用
 - 周圍:org.aopalliance.intercept.MethodInterceptor
 - 之前:org.springframework.aop.BeforeAdvice
 - 之后:org.springframework.aop.AfterReturningAdvice
 - 拋出:org.springframework.aop.ThrowsAdvice
 
39)有哪些不同類型的自動代理?
回答:
- BeanNameAutoProxyCreator
 - DefaultAdvisorAutoProxyCreator
 - 元數據自動代理
 
40)與Spring應用程序中引發的所有異常相關的Exception類是什么?
回答:
DataAccessException – org.springframework.dao.DataAccessException
41)那些SpringDAO類會拋出什么樣的異常?
回答:
spring的DAO類不會引發任何與技術相關的異常,例如SQLException。 他們拋出異常,這些異常是DataAccessException的子類。
42)什么是DataAccessException?
回答:
DataAccessException是RuntimeException。 這是一個未經檢查的異常。 不會強迫用戶處理此類異常。
43)如何配置Bean以從JNDI獲取數據源?
回答:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName"><value>java:comp/env/jdbc/myDatasource</value></property></bean>44)如何創建數據源連接池?
回答:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driver"><value>${db.driver}</value></property><property name="url"><value>${db.url}</value></property><property name="username"><value>${db.username}</value></property><property name="password"><value>${db.password}</value></property></bean>45)如何在Spring框架中更有效地使用JDBC?
回答:
在spring框架提供的名為JdbcTemplate的模板類的幫助下,可以更有效地使用JDBC。
46)如何使用JdbcTemplate?
回答:
通過使用Spring JDBC框架,資源管理和錯誤處理的負擔大大減輕了。 因此,它使開發人員可以編寫語句和查詢以將數據往返數據庫。
JdbcTemplate模板=新的JdbcTemplate (myDataSource);
一個簡單的DAO類如下所示。
public class StudentDaoJdbc implements StudentDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}more..}配置如下所示。
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"><ref bean="dataSource"/></property></bean><bean id="studentDao" class="StudentDaoJdbc"><property name="jdbcTemplate"><ref bean="jdbcTemplate"/></property></bean><bean id="courseDao" class="CourseDaoJdbc"><property name="jdbcTemplate"><ref bean="jdbcTemplate"/></property></bean>47)如何在Spring使用JdbcTemplate將數據寫入后端?
回答:
在將數據寫入數據庫時??,JdbcTemplate使用其中一些回調。 您在這些接口中發現的有用性會有所不同。 有兩個簡單的界面。 一個是PreparedStatementCreator ,另一個是BatchPreparedStatementSetter 。
48)解釋PreparedStatementCreator嗎?
回答:
PreparedStatementCreator是用于將數據寫入數據庫的最常用接口之一。 該接口具有一種方法createPreparedStatement()。
PreparedStatement createPreparedStatement (連接conn)
拋出SQLException;
當實現此接口時,我們應該從Connection參數創建并返回PreparedStatement,并且自動進行異常處理。 當實現此接口時,還將實現另一個接口SqlProvider ,該接口具有一個名為getSql()的方法,該方法用于向JdbcTemplate提供sql字符串。
49)解釋BatchPreparedStatementSetter?
回答:
如果用戶一次要更新多行內容,則可以使用BatchPreparedStatementSetter 。 該接口提供兩種方法
setValues(PreparedStatement ps,int i)拋出SQLException;
int getBatchSize();
getBatchSize()告訴JdbcTemplate類創建多少個語句。 并且這還決定了setValues()會被調用多少次。
50)說明RowCallbackHandler以及為什么使用它?
回答:
為了瀏覽記錄,我們通常選擇ResultSet。 但是spring提供了一個界面來處理所有的負擔,讓用戶決定如何處理每一行。 spring提供的接口是RowCallbackHandler 。 有一個方法processRow()需要實現,以便它適用于每一行。
void processRow (java.sql.ResultSet rs);
參考: Sunil Gulabani博客上來自JCG合作伙伴 Sunil Gulabani的Spring訪談問題 。翻譯自: https://www.javacodegeeks.com/2013/09/spring-interview-questions.html
spring常見面試問題
總結
以上是生活随笔為你收集整理的spring常见面试问题_Spring面试问题的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: JDK 10:从Java访问Java应用
 - 下一篇: 如何可以减少手机耗电