1:請解釋下Spring框架中的IoC?前端
Spring中的 org.springframework.beans 包和 org.springframework.context包構成了Spring框架IoC容器的基礎。BeanFactory 接口提供了一個先進的配置機制,使得任何類型的對象的配置成爲可能。ApplicationContex接口對BeanFactory(是一個子接口)進行了擴展,在BeanFactory的基礎上添加了其餘功能,好比與Spring的AOP更容易集成,也提供了處理message resource的機制(用於國際化)、事件傳播以及應用層的特別配置,好比針對Web應用的WebApplicationContext。java
org.springframework.beans.factory.BeanFactory 是Spring IoC容器的具體實現,用來包裝和管理前面提到的各類bean。BeanFactory接口是Spring IoC 容器的核心接口。程序員
---------------------------------------------------------------------------------------------------------------------------------web
2:BeanFactory和ApplicationContext有什麼區別?spring
BeanFactory 能夠理解爲含有bean集合的工廠類。BeanFactory 包含了種bean的定義,以便在接收到客戶端請求時將對應的bean實例化。sql
BeanFactory還能在實例化對象的時生成協做類之間的關係。此舉將bean自身與bean客戶端的配置中解放出來。BeanFactory還包含了bean生命週期的控制,調用客戶端的初始化方法(initialization methods)和銷燬方法(destruction methods)。數據庫
從表面上看,application context如同bean factory同樣具備bean定義、bean關聯關係的設置,根據請求分發bean的功能。但application context在此基礎上還提供了其餘的功能。apache
---------------------------------------------------------------------------------------------------------------------------------編程
3:IOC有什麼優勢?後端
IOC或依賴注入減小了應用程序的代碼量。它使得應用程序的測試很簡單,由於在單元測試中再也不須要單例或JNDI查找機制。簡單的實現以及較少的干擾機制使得鬆耦合得以實現。IOC容器支持勤性單例及延遲加載服務
---------------------------------------------------------------------------------------------------------------------------------
4:Spring應用程序看起來像什麼?
一個定義功能的接口
實現包括屬性,setter和getter方法,功能等Spring AOP 、Spring的XML配置文件
使用該功能的客戶端編程
---------------------------------------------------------------------------------------------------------------------------------
5:Spring中的依賴注入是什麼?
依賴注入做爲控制反轉(IOC)的一個層面,能夠有多種解釋方式。在這個概念中,你不用建立對象而只須要描述如何建立它們。你沒必要經過代碼直接的將組件和 服務鏈接在一塊兒,而是經過配置文件說明哪些組件須要什麼服務。以後IOC容器負責銜接。
---------------------------------------------------------------------------------------------------------------------------------
6:如何向Spring 容器提供配置元數據?
有三種方式向Spring 容器提供元數據:
XML配置文件
基於註解配置
基於Java的配置
---------------------------------------------------------------------------------------------------------------------------------
7:如何定義bean的做用域?
在Spring中建立一個bean的時候,咱們能夠聲明它的做用域。只須要在bean定義的時候經過’scope’屬性定義便可。例如,當Spring須要產生每次一個新的bean實例時,應該聲明bean的scope屬性爲prototype。若是每次你但願Spring返回一個實例,應該聲明bean的scope屬性爲singleton。
---------------------------------------------------------------------------------------------------------------------------------
8:sprinmvc工做原理?:
1.spring mvc請全部的請求都提交給DispatcherServlet,它會委託應用系統的其餘模塊負責負責對請求進行真正的處理工做。
2.DispatcherServlet查詢一個或多個HandlerMapping,找處處理請求的Controller.
3.DispatcherServlet請請求提交到目標Controller
4.Controller進行業務邏輯處理後,會返回一個ModelAndView
5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
6.視圖對象負責渲染返回給客戶端。
---------------------------------------------------------------------------------------------------------------------------------
9:什麼是Spring MVC框架的控制器?
控制器提供對應用程序行爲的訪問,一般經過服務接口實現。控制器解析用戶的輸入,並將其轉換爲一個由視圖呈現給用戶的模型。Spring 經過一種極其抽象的方式實現控制器,它容許用戶建立多種類型的控制器
---------------------------------------------------------------------------------------------------------------------------------
10:什麼是@Qualifier 註解?
當有多個相同類型的bean而只有其中的一個須要自動裝配時,將@Qualifier 註解和@Autowire 註解結合使用消除這種混淆,指明須要裝配的bean。
---------------------------------------------------------------------------------------------------------------------------------
11:怎樣開啓註解裝配?
註解裝配在默認狀況下是不開啓的,爲了使用註解裝配,咱們必須在Spring配置文件中配置 <context:annotation-config/>元素。
---------------------------------------------------------------------------------------------------------------------------------
12:自動裝配有哪些侷限性 ?
重寫: 你仍需用 <constructor-arg>和 <property> 配置來定義依賴,意味着總要重寫自動裝配。
基本數據類型:你不能自動裝配簡單的屬性,如基本數據類型,String字符串,和類。
模糊特性:自動裝配不如顯式裝配精確,若是有可能,建議使用顯式裝配。
---------------------------------------------------------------------------------------------------------------------------------
13:依賴注入有幾種方式?
set注入
構造器注入
自動裝配
---------------------------------------------------------------------------------------------------------------------------------
14:AOP的底層實現?
使用JDK動態代理
---------------------------------------------------------------------------------------------------------------------------------
15:請說明一下AOP中須要的最基本的三個類:
目標類 切面類 代理類
---------------------------------------------------------------------------------------------------------------------------------
16:寫出spring中的註解及其含義(至少6個)
@Component 標識一個受Spring管理的組件
@Respository標識持久層
@Service 標識服務層
@Controller 標識控制層
@Autowired 它能夠對類成員變量、方法及構造函數進行標註,完成自動裝配的工做
@Qualifier 指定注入 Bean 的名稱
---------------------------------------------------------------------------------------------------------------------------------
17:請說一下SpringMVC的執行流程?
1.spring mvc將全部的請求都提交給DispatcherServlet,它會委託應用系統的其餘模塊負責對請求 進行真正的處理工做。
2.DispatcherServlet查詢一個或多個HandlerMapping,找處處理請求的Controller.
3.DispatcherServlet請請求提交到目標Controller
4.Controller進行業務邏輯處理後,會返回一個ModelAndView
5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
6.視圖對象負責渲染返回給客戶端。
---------------------------------------------------------------------------------------------------------------------------------
18:講下SpringMvc和Struts1,Struts2的比較的優點?
性能上Struts1>SpringMvc>Struts2 開發速度上SpringMvc和Struts2差很少,比Struts1要高
---------------------------------------------------------------------------------------------------------------------------------
19:怎麼樣在方法裏面獲得Request,或者Session
直接在方法的形參中聲明request,SpringMvc就自動把request對象傳入
---------------------------------------------------------------------------------------------------------------------------------
20:SpringMVC怎麼樣設定重定向和轉發的
在返回值前面加"forward:"就可讓結果轉發,譬如"forward:user.do?name=method4" 在返回值前面加"redirect:"就可讓返回值重定向,譬如"redirect:http://www.baidu.com"
---------------------------------------------------------------------------------------------------------------------------------
21:什麼是Spring的MVC框架?
Spring 配備構建Web 應用的全功能MVC框架。Spring能夠很便捷地和其餘MVC框架集成,如Struts,Spring 的MVC框架用控制反轉把業務對象和控制邏輯清晰地隔離。它也容許以聲明的方式把請求參數和業務對象綁定。
---------------------------------------------------------------------------------------------------------------------------------
22:DispatcherServlet的做用?
Spring的MVC框架是圍繞DispatcherServlet來設計的,它用來處理全部的HTTP請求和響應。
---------------------------------------------------------------------------------------------------------------------------------
23:WebApplicationContext是幹什麼的?
WebApplicationContext 繼承了ApplicationContext 並增長了一些WEB應用必備的特有功能,它不一樣於通常的ApplicationContext ,由於它能處理主題,並找到被關聯的servlet。
---------------------------------------------------------------------------------------------------------------------------------
24:什麼是Spring MVC框架的控制器?
控制器提供一個訪問應用程序的行爲,此行爲一般經過服務接口實現。控制器解析用戶輸入並將其轉換爲一個由視圖呈現給用戶的模型。Spring用一個很是抽象的方式實現了一個控制層,容許用戶建立多種用途的控制器。
---------------------------------------------------------------------------------------------------------------------------------
25:Spring 框架中都用到了哪些設計模式?
代理模式—在AOP和remoting中被用的比較多。
單例模式—在spring配置文件中定義的bean默認爲單例模式。
模板方法—用來解決代碼重複的問題。
好比. RestTemplate, JmsTemplate, JpaTemplate。
前端控制器—Srping提供了DispatcherServlet來對請求進行分發。
視圖幫助(View Helper )—Spring提供了一系列的JSP標籤,高效宏來輔助將分散的代碼整合在視圖裏。
依賴注入—貫穿於BeanFactory / ApplicationContext接口的核心理念。
工廠模式—BeanFactory用來建立對象的實例。
---------------------------------------------------------------------------------------------------------------------------------
26:MVC是三層開發結構,這三個字母按順序分別表明
Model、View、Controller
---------------------------------------------------------------------------------------------------------------------------------
27:請簡述什麼是MVC模式?
一、是一種開發軟件工程的設計模式。
二、M即Model,模型,定義數據模型和業務模型,一般由javabean實現;
V即View,視圖,定義與客戶端進行交互的界面,一般由jsp,freemarker實現;
C即Controller,控制器,接收客戶端請求並調用模型和視圖處理請求,一般由servlet實現。
---------------------------------------------------------------------------------------------------------------------------------
28:請寫出SpringMVC中的web.xml文件關於核心控制器的配置內容。[提示:DispatcherServlet]
答:以下所示:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
---------------------------------------------------------------------------------------------------------------------------------
29:請簡單描述SpringMVC框架的執行流程,要求條理清晰。
答:(1)客戶端在提交請求後,服務器接收請求並轉交給springmvc項目中的前端控制器DispatcherServlet;
(2)DispatcherServlet根據映射把請求轉發給後端處理器Handler,Handler調用模型進行相應的處理;
(3)Handler處理器把處理後的結果封裝到模型和視圖對象[ModelAndView]中並返回到DispatcherServlet;
(4)DispatcherServlet再根據映射找到指定的視圖jsp並對返回數據進行渲染;
(5)視圖jsp把通過渲染以後的數據返回到DispatcherServlet;
(6)DispatcherServlet把最終的結果頁面數據返回給客戶端。
---------------------------------------------------------------------------------------------------------------------------------
30:如何理解ORM概念?請簡單描述。
ORM解決的主要問題是對象關係的映射。域模型和關係模型分別是創建在概念模型的基礎上的。域模型是面向對象的,而關係模型是面向關係的。通常狀況下,一個持久化類和一個表對應,類的每一個實例對應表中的一條記錄,類的每一個屬性對應表的每一個字段。
---------------------------------------------------------------------------------------------------------------------------------
31:ORM技術的特色是什麼?
答:1.提升了開發效率。因爲ORM能夠自動對Entity對象與數據庫中的Table進行字段與屬性的映射,因此咱們實際可能已經不須要一個專用的、龐大的數據訪問層。
---------------------------------------------------------------------------------------------------------------------------------
32:在使用MyBatis的mapper方式時應注意哪些問題?
答:
(1)mapper映射與接口必須是相同的主文件名
(2)mapper映射與接口必須在相同的包中
(3)mapper映射中的命名空間屬性[namespace]的值必須是mapper接口的全限定名稱
(4)mapper映射中的操做元素的標識屬性[id]的值必須是mapper接口中相應方法的名稱
(5)若是須要輸入參數,則mapper映射中的操做元素的parameterType屬性的值必須是mapper接口中相應方法的形參類型的全稱
(6)若是存在返回值參數,則mapper映射中的操做元素的resultType屬性的值必須是mapper接口中相應方法的返回值類型的全稱
---------------------------------------------------------------------------------------------------------------------------------
33:簡述在使用測試框架JUnit時經常使用的註解有哪些並說明各自的做用?
答:
@Test(expected,timeout):定義測試用例,expected屬性指按期望拋出的異常,timeout屬性指定執行限定的時間,
單位是毫秒
@Before:定義在每一個測試用例執行以前所執行的方法
@After:定義在每一個測試用例執行以後所執行的方法
@BeforeClass:定義在全部測試用例執行以前所執行的靜態方法
@AfterClass:定義在全部測試用例執行以後所執行的靜態方法
---------------------------------------------------------------------------------------------------------------------------------
34:MyBatis編程步驟是什麼樣的?
① 建立SqlSessionFactory
② 經過SqlSessionFactory建立SqlSession
③ 經過sqlsession執行數據庫操做
④ 調用session.commit()提交事務
⑤ 調用session.close()關閉會話
---------------------------------------------------------------------------------------------------------------------------------
35:Mybatis中如何執行批處理?
使用BatchExecutor完成批處理
---------------------------------------------------------------------------------------------------------------------------------
36:請簡述Mybatis的工做流程 ?
(1) 加載配置並初始化
(2) 接收調用請求
(3) 處理操做請求 觸發條件:API 接口層傳遞請求過來
(4)返回處理結果將最終的處理結果返回。
---------------------------------------------------------------------------------------------------------------------------------
37:請說明工做日誌文件log4j.properties的內容應該如何編寫? log4j.rootLogger=debug,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.conversionPattern=%d %p %c %m%n
---------------------------------------------------------------------------------------------------------------------------------
38:當實體類中的屬性名和表中的字段名不同如何解決?
經過在查詢的sql語句中定義字段名的別名,讓字段名的別名和實體類的屬性名一致
<select id=」selectorder」 parametertype=」int」 resultetype=」me.gacl.domain.order」>
select order_id id, order_no orderno ,order_price price form orders where order_id=#{id};
</select>
---------------------------------------------------------------------------------------------------------------------------------
39:Mybatis鏈接查詢怎麼實現?
使用@Results({
@Result(column="關聯查詢的字段",property="對象",one = @One(select="徹底限定名.方法名"))
})
---------------------------------------------------------------------------------------------------------------------------------
40:mybatis-spring整合的時候 須要在Spring配置哪一個bean?
SqlsessionfactoryBean
---------------------------------------------------------------------------------------------------------------------------------
41:MyBatis(IBatis)的好處是什麼
ibatis把sql語句從Java源程序中獨立出來, 放在單獨的XML文件中編寫,給程序的維護帶來了很大便利。 ibatis封裝了底層JDBC API的調用細節,並能自動將結果集轉換成Java Bean對象, 大大簡化了Java數據庫編程的重複工做。 由於Ibatis須要程序員本身去編寫sql語句, 程序員能夠結合數據庫自身的特色靈活控制sql語句, 所以可以實現比hibernate等全自動orm框架更高的查詢效率,可以完成複雜查詢
---------------------------------------------------------------------------------------------------------------------------------
42:請寫出4個動態SQL的元素?
if choose where set
---------------------------------------------------------------------------------------------------------------------------------
43:請說出動態SQL的做用:
動態SQL元素和使用JSTL或其餘類型基於XML的文本處理器類似
Mybatis採用功能強大的OGNL表達式來完成
---------------------------------------------------------------------------------------------------------------------------------
44:Mybatis動態sql是作什麼的?簡述一下動態sql的執行原理?
Mybatis動態sql可讓咱們在Xml映射文件內以標籤的形式編寫sql,完成邏輯判斷和動態拼接sql的功能,其執行原理爲,使用OGNL從sql參數對象中計算表達式的值,根據表達式的值動態拼接sql,以此來完成動態sql的功能。
---------------------------------------------------------------------------------------------------------------------------------
45:在實現分頁技術時,一般須要設置哪些變量來講明與分頁邏輯有關的參數?
答:當前頁碼;每頁記錄數;總記錄數;總頁數;當前頁面數據。
---------------------------------------------------------------------------------------------------------------------------------
46:在實現分頁時至少須要獲取哪些數據?
答:當前頁碼,當前頁,總記錄數,總頁數,當前數據
---------------------------------------------------------------------------------------------------------------------------------
47:請簡要說明ResultMap標籤中的各個屬性的意義是什麼?
答:(1)id屬性 ,resultMap標籤的標識。
(2)type屬性 ,返回值的全限定類名,或類型別名。
(3)autoMapping屬性 ,值範圍true(默認值)|false, 設置是否啓動自動映射功能,自動映射功能就是自動查找與字段名小寫同名的屬性名,並調用setter方法。而設置爲false後,則須要在`resultMap`內明確註明映射關係纔會調用對應的setter方法。
---------------------------------------------------------------------------------------------------------------------------------
48:在經過mybatis解決多個對象之間的關係時要使用關係映射,那麼請簡要描述當前我校的學生與班級的對應關係是什麼?
答:從單向來看,一個學生只屬於一個班級,這是單向一對一的關係;一個班級能夠包含多個學生,這是單向一對多的關係。從雙向來看,是雙向一對多或雙向多對一的關係。
---------------------------------------------------------------------------------------------------------------------------------
49:請簡要說明在mybatis中的#{}與${}二者的區別是什麼?
答:(1)在傳遞字符串參數時若是是作爲所有參數則使用#{},若是是作爲部份參數,即包含在單引號中時使用${};(2)若是參數是字段名稱或數據庫中的關鍵字時採用${}便可解決問題。
---------------------------------------------------------------------------------------------------------------------------------
50:請簡要說明Spring框架與MyBatis框架在整合時須要配置的主要步驟是什麼?
答:(1)配置數據源BasicDataSource;
(2)配置會話工廠SqlSessionFactoryBean;
(3)配置映射器的掃描器MapperScannerConfigurer。
---------------------------------------------------------------------------------------------------------------------------------
51:請簡要說明Spring框架與SpringMVC框架在整合時須要配置的主要步驟是什麼?
答:(1)指定控制器層所在的java包位置;
(2)啓用MVC註解功能;
(3)經過InternalResourceViewResolver設置邏輯視圖的前綴和後綴;
(4)建立並註冊類型轉換器ConversionServiceFactoryBean;
(5)註冊CommonsMultipartResolver開啓上傳文件功能;
(6)配置SimpleMappingExceptionResolver啓用異常處理功能
---------------------------------------------------------------------------------------------------------------------------------
52:請簡要說明Spring框架管理業務層時須要配置的主要步驟是什麼?
答:(1)指定業務層所在的java包位置;
(2)配置事務管理器DataSourceTransactionManager;
(3)啓用事務功能或添加相應的事務註解@Transactional。
---------------------------------------------------------------------------------------------------------------------------------
53:如何設置Maven 的編譯級別?
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build> 重要!!!!
---------------------------------------------------------------------------------------------------------------------------------
54:Maven 是什麼?
Maven是基於項目對象模型(POM),能夠經過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。
---------------------------------------------------------------------------------------------------------------------------------
55:安裝Nexus的時候注意什麼?
1.安裝命令是Install
2.開啓管理員權限的CMD
---------------------------------------------------------------------------------------------------------------------------------
56:maven相比其餘傳統項目的幾大好處?
---------------------------------------------------------------------------------------------------------------------------------
57:請簡要說明springmvc中的視圖解析器InternalResourceViewResolver中經常使用的三個屬性的做用?
答:(1);viewClass屬性指明視圖類型;
(2)prefix屬性指明視圖路徑前綴;
(3)suffix屬性指明視圖路徑後綴。
---------------------------------------------------------------------------------------------------------------------------------
58:手寫兩種單例模式
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
} ---------------------------------------------------------------------------------------------------------------------------------
59:如何在web.xml中設置編碼?
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
---------------------------------------------------------------------------------------------------------------------------------