spring源码分析第六天------spring经典面试问题
spring源碼分析第六天------spring經(jīng)典面試問(wèn)題
1、Spring5 新特性及應(yīng)用舉例
2、Spring 經(jīng)典的面試問(wèn)題
a、什么是 Spring 框架?Spring 框架有哪些主要模塊?
Spring 框架是一個(gè)為 Java 應(yīng)用程序的開(kāi)發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的 Java 平臺(tái)。Spring 幫 助開(kāi)發(fā)者解決了開(kāi)發(fā)中基礎(chǔ)性的問(wèn)題,使得開(kāi)發(fā)人員可以專(zhuān)注于應(yīng)用程序的開(kāi)發(fā)。
b、使用 Spring 框架能帶來(lái)哪些好處?
IOC和DI、事務(wù)性、springMVC、Spring AOP
c、在 Java 中依賴(lài)注入有以下三種實(shí)現(xiàn)方式:
接口注入–>@Autowired:自動(dòng)裝配
構(gòu)造器注入:@Autowired //構(gòu)造器注入 private TestBean11(String message) { this.message = message; }setter注入:private String message; @Autowired //setter方法注入 public void setMessage(String message) { this.message = message; } 字段注入:public class TestBean12 {
@Autowired //字段注入
private String message;
//省略getter和setter
}
Setter 方法注入 :
//注入對(duì)象springDao private SpringDao springDao; //一定要寫(xiě)被注入對(duì)象的set方法 public void setSpringDao(SpringDao springDao) { this.springDao = springDao; }構(gòu)造器注入
//注入對(duì)象springDao private SpringDao springDao; private User user; public SpringAction(SpringDao springDao,User user){ this.springDao = springDao; this.user = user; System.out.println("構(gòu)造方法調(diào)用springDao和user"); }3、BeanFactory 和 ApplicationContext 有什么區(qū)別?
BeanFactory 可以理解為含有 bean 集合的工廠類(lèi)。BeanFactory 包含了種 bean 的定義,以便在接 收到客戶(hù)端請(qǐng)求時(shí)將對(duì)應(yīng)的 bean 實(shí)例化。
BeanFactory 還能在實(shí)例化對(duì)象的時(shí)生成協(xié)作類(lèi)之間的關(guān)系。此舉將 bean 自身與 bean 客戶(hù)端的配置 中解放出來(lái)。
BeanFactory還包含了bean生命周期的控制,調(diào)用客戶(hù)端的初始化方法(initialization Methods)和銷(xiāo)毀方法(destruction Methods)。
從表面上看,application context 如同 bean factory 一樣具有 bean 定義、bean 關(guān)聯(lián)關(guān)系的設(shè)置, 根據(jù)請(qǐng)求分發(fā) bean 的功能。但 application context 在此基礎(chǔ)上還提供了其他的功能。
提供了支持國(guó)際化的文本消息;
統(tǒng)一的資源文件讀取方式;
已在監(jiān)聽(tīng)器中注冊(cè)的 bean 的事件
4、Spring 提供幾種配置方式來(lái)設(shè)置元數(shù)據(jù)?
將 Spring 配置到應(yīng)用開(kāi)發(fā)中有以下三種方式:
1.基于 XML 的配置
2.基于注解的配置
3.基于 Java 的配置
5、如何用基于 Java 配置的方式配置 Spring?
Spring 對(duì) Java 配置的支持是由@Configuration 注解和@Bean 注解來(lái)實(shí)現(xiàn)的。
由@Bean 注解的方法將 會(huì)實(shí)例化、配置和初始化一個(gè)新對(duì)象,這個(gè)對(duì)象將由 Spring 的 IOC 容器來(lái)管理。
@Bean 聲明所起到的 作用與 元素類(lèi)似。
被@Configuration 所注解的類(lèi)則表示這個(gè)類(lèi)的主要目的是作為 bean 定義的資源。 被@Configuration 聲明的類(lèi)可以通過(guò)在同一個(gè)類(lèi)的內(nèi)部調(diào)用@bean 方法來(lái)設(shè)置嵌入 bean 的依賴(lài)關(guān) 系。
6、怎樣用注解的方式配置 Spring?
1.@Required:該注解應(yīng)用于設(shè)值方法。
2.@Autowired:該注解應(yīng)用于有值設(shè)值方法、非設(shè)值方法、構(gòu)造方法和變量。
3.@Qualifier:該注解和@Autowired 注解搭配使用,用于消除特定 bean 自動(dòng)裝配的歧義。
4.JSR-250 Annotations:Spring 支持基于 JSR-250 注解的以下注解,@Resource、@PostConstruct 和 @PreDestroy。
7、請(qǐng)解釋 Spring Bean 的生命周期?
8、Spring Bean 作用域之間的區(qū)別?
1.singleton:這種 bean 范圍是默認(rèn)的,這種范圍確保不管接受到多少個(gè)請(qǐng)求,每個(gè)容器中只有一個(gè) bean 的實(shí)例,單例的模式由 bean factory 自身來(lái)維護(hù)。
2.prototype:原形范圍與單例范圍相反,為每一個(gè) bean 請(qǐng)求提供一個(gè)實(shí)例。
3.request:在請(qǐng)求 bean 范圍內(nèi)會(huì)每一個(gè)來(lái)自客戶(hù)端的網(wǎng)絡(luò)請(qǐng)求創(chuàng)建一個(gè)實(shí)例,在請(qǐng)求完成以后,bean 會(huì)失效并被垃圾回收器回收。
4.Session:與請(qǐng)求范圍類(lèi)似,確保每個(gè) session 中有一個(gè) bean 的實(shí)例,在 session 過(guò)期后,bean 會(huì)隨之失效。
5.global-session:global-session 和 Portlet 應(yīng)用相關(guān)。當(dāng)你的應(yīng)用部署在 Portlet 容器中工 作時(shí),它包含很多 portlet。如果你想要聲明讓所有的 portlet 共用全局的存儲(chǔ)變量的話(huà),那么這全 局變量需要存儲(chǔ)在 global-session 中。 全局作用域與 Servlet 中的 session 作用域效果相同。
9、Spring 框架中的單例 Beans 是線(xiàn)程安全的么?
10、FileSystemResource 和 ClassPathResource 有何區(qū)別?
11、Spring 框架中都用到了哪些設(shè)計(jì)模式?
1、代理模式—在 AOP 和 remoting 中被用的比較多。
2、單例模式:在 spring 配置文件中定義的 bean 默認(rèn)為單例模式。
3、模板模式:用來(lái)解決代碼重復(fù)的問(wèn)題。 比如. RestTemplate, JmsTemplate, JpaTemplate。
4、委派模式:Srping 提供了 DispatcherServlet 來(lái)對(duì)請(qǐng)求進(jìn)行分發(fā)。
5、工廠模式:BeanFactory 用來(lái)創(chuàng)建對(duì)象的實(shí)例,貫穿于 BeanFactory / ApplicationContext 接 口的核心理念。
6、代理模式:AOP 思想的底層實(shí)現(xiàn)技術(shù),Spring 中采用 JDK Proxy 和 CgLib 類(lèi)庫(kù)。
12、在 Spring 框架中如何更有效的使用 JDBC?
使用 Spring JDBC 框架,資源管理以及錯(cuò)誤處理的代價(jià)都會(huì)減輕。開(kāi)發(fā)人員只需通過(guò) statements 和 queries 語(yǔ)句從數(shù)據(jù)庫(kù)中存取數(shù)據(jù)。Spring 框架中通過(guò)使用模板類(lèi)能更有效的使用 JDBC,也就是所謂 的 JdbcTemplate。
13、請(qǐng)解釋下 Spring 框架中的 IOC?
BeanFactory 接 口 提 供 了 一 個(gè) 先 進(jìn) 的 配 置 機(jī) 制 , 使 得 任 何 類(lèi) 型 的 對(duì) 象 的 配 置 成 為 可 能 。 ApplicationContex 接口對(duì) BeanFactory(是一個(gè)子接口)進(jìn)行了擴(kuò)展,在 BeanFactory 的基礎(chǔ)上 添加了其他功能,比如與 Spring 的 AOP 更容易集成,也提供了處理 message resource 的機(jī)制(用于 國(guó)際化)、事件傳播以及應(yīng)用層的特別配置,比如針對(duì) Web 應(yīng)用的 WebApplicationContext。
總結(jié)
以上是生活随笔為你收集整理的spring源码分析第六天------spring经典面试问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java中常用的类,包,接口
- 下一篇: mysql 视图 过程 函数_MySQL