免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

Spring經(jīng)典高頻面試題,原來(lái)是長(zhǎng)這個(gè)樣子

:2019年11月04日 程序人生
分享到:

Spring框架是一個(gè)為Java應(yīng)用程序開發(fā)提供綜合、廣泛的基礎(chǔ)性支持的Java平臺(tái)。Spring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問(wèn)題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring框架本身也是按照設(shè)計(jì)模式精心打...

1 什么是Spring框架,Spring框架有哪些主要模塊

2 使用Spring框架能帶來(lái)哪些好處

3 什么是控制反轉(zhuǎn)(IoC),什么是依賴注入

4 在Java中依賴注入有哪些方式

5 BeanFactory和ApplicationContext有什么區(qū)別

6 Spring提供幾種配置方式來(lái)設(shè)置元數(shù)據(jù)

7 如何使用XML配置方式配置Spring

8 Spring提供哪些配置形式

9 怎樣用注解的方式配置Spring

10 請(qǐng)解釋Spring Bean的生命周期

11 更多經(jīng)典高頻面試題

01

什么是Spring框架,Spring框架有哪些主要模塊

Spring框架是一個(gè)為Java應(yīng)用程序開發(fā)提供綜合、廣泛的基礎(chǔ)性支持的Java平臺(tái)。Spring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問(wèn)題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring框架本身也是按照設(shè)計(jì)模式精心打造的,這使得我們可以在開發(fā)環(huán)境中安心地集成Spring框架,不必?fù)?dān)心Spring是如何在后臺(tái)工作的。

02

使用Spring框架能帶來(lái)哪些好處

下面列舉了一些使用Spring框架帶來(lái)的主要好處。

(1)Dependency Injection(DI)使得構(gòu)造器和JavaBean properties文件中的依賴關(guān)系一目了然。

(2)與EJB容器相比較,IoC容器更加趨向于輕量級(jí)。這樣一來(lái)使用IoC容器在有限的內(nèi)存和CPU資源的情況下進(jìn)行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。

(3)Spring并沒有閉門造車,Spring利用了已有的技術(shù),比如ORM框架、logging框架、J2EE、Quartz和JDK Timer,以及其他視圖技術(shù)。

(4)Spring框架是按照模塊的形式來(lái)組織的。由包和類的編號(hào)就可以看出其所屬的模塊,開發(fā)者只需選用需要的模塊即可。

(5)要測(cè)試一個(gè)用Spring開發(fā)的應(yīng)用程序十分簡(jiǎn)單,因?yàn)闇y(cè)試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框架中了。更加簡(jiǎn)單的是,利用JavaBean形式的POJO類,可以很方便地利用依賴注入來(lái)寫入測(cè)試數(shù)據(jù)。

(6)Spring的Web框架也是一個(gè)精心設(shè)計(jì)的Web MVC框架,為開發(fā)者在Web框架的選擇上提供了一個(gè)除主流框架(比如Struts)和過(guò)度設(shè)計(jì)的、不流行Web框架以外的選擇。

(7)Spring提供了一個(gè)便捷的事務(wù)管理接口,適用于小型的本地事務(wù)處理(比如在單DB的環(huán)境下)和復(fù)雜的共同事務(wù)處理(比如利用JTA的復(fù)雜DB環(huán)境)。

03

什么是控制反轉(zhuǎn)(IoC),什么是依賴注入

(1)控制反轉(zhuǎn)是應(yīng)用于軟件工程領(lǐng)域的,在運(yùn)行時(shí)被裝配器對(duì)象用來(lái)綁定耦合對(duì)象的一種編程技巧,對(duì)象之間的耦合關(guān)系在編譯時(shí)通常是未知的。在傳統(tǒng)的編程方式中,業(yè)務(wù)邏輯的流程是由應(yīng)用程序中早已被設(shè)定好關(guān)聯(lián)關(guān)系的對(duì)象來(lái)決定的。在使用控制反轉(zhuǎn)的情況下,業(yè)務(wù)邏輯的流程是由對(duì)象關(guān)系圖來(lái)決定的,該對(duì)象關(guān)系圖由裝配器負(fù)責(zé)實(shí)例化,這種實(shí)現(xiàn)方式還可以將對(duì)象之間的關(guān)聯(lián)關(guān)系的定義抽象化。綁定的過(guò)程是通過(guò)“依賴注入”實(shí)現(xiàn)的。

(2)控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標(biāo)組件更多控制為目的設(shè)計(jì)范式,并在實(shí)際工作中起到了有效的作用。

(3)依賴注入是在編譯階段尚未知所需的功能是來(lái)自哪個(gè)的類的情況下,將其他對(duì)象所依賴的功能對(duì)象實(shí)例化的模式。這就需要一種機(jī)制來(lái)激活相應(yīng)的組件以提供特定的功能,所以依賴注入是控制反轉(zhuǎn)的基礎(chǔ)。否則如果在組件不受框架控制的情況下,框架又怎么知道要?jiǎng)?chuàng)建哪個(gè)組件呢?

04

在Java中依賴注入有哪些方式

(1)構(gòu)造器注入。

(2)Setter方法注入。

(3)接口注入。

05

 BeanFactory和ApplicationContext有什么區(qū)別

BeanFactory 可以理解為含有Bean集合的工廠類。BeanFactory 包含了Bean的定義,以便在接收到客戶端請(qǐng)求時(shí)將對(duì)應(yīng)的Bean實(shí)例化。

BeanFactory還能在實(shí)例化對(duì)象時(shí)生成協(xié)作類之間的關(guān)系。此舉將Bean自身從Bean客戶端的配置中解放出來(lái)。BeanFactory還包含Bean生命周期的控制,調(diào)用客戶端的初始化方法(Initialization Method)和銷毀方法(Destruction Method)。

從表面上看,ApplicationContext如同BeanFactory一樣具有Bean定義、Bean關(guān)聯(lián)關(guān)系的設(shè)置及根據(jù)請(qǐng)求分發(fā)Bean的功能。但ApplicationContext在此基礎(chǔ)上還提供了其他功能。

(1)提供了支持國(guó)際化的文本消息。

(2)統(tǒng)一的資源文件讀取方式。

(3)已在監(jiān)聽器中注冊(cè)的Bean的事件。

以下是三種較常見的 ApplicationContext 實(shí)現(xiàn)方式。

(1) ClassPathXmlApplicationContext: 從ClassPath的XML配置文件中讀取上下文,并生成上下文定義。應(yīng)用程序上下文從程序環(huán)境變量中取得。 

ApplicationContext context = new ClassPathXmlApplicationContext(“application.xml”);

(2)FileSystemXmlApplicationContext :由文件系統(tǒng)中的XML配置文件讀取上下文。 

ApplicationContext context = new FileSystemXmlApplicationContext(“application.xml”);

(3)XmlWebApplicationContext:由Web應(yīng)用的XML文件讀取上下文。

06

Spring提供幾種配置方式來(lái)設(shè)置元數(shù)據(jù)

Spring提供以下三種配置方式來(lái)設(shè)置元數(shù)據(jù):

(1)基于XML的配置。

(2)基于注解的配置。

(3)基于Java的配置。

07

如何使用XML配置方式配置Spring

在Spring框架中,依賴和服務(wù)需要專門的配置文件實(shí)現(xiàn),一般用XML格式的配置文件。這些配置文件的格式采用公共的模板,由一系列的Bean定義和專門的應(yīng)用配置選項(xiàng)組成。 

Spring XML配置的主要目的是使所有的Spring組件都可以用XML文件的形式來(lái)進(jìn)行配置。這意味著不會(huì)出現(xiàn)其他的Spring配置類型(比如聲明配置方式或基于Java Class的配置方式)。

Spring的XML配置方式是使用被Spring命名空間所支持的一系列的XML標(biāo)簽來(lái)實(shí)現(xiàn)的。Spring主要的命名空間有context、beans、jdbc、tx、aop、mvc和aso。例如:

<beans>

<!-- JSON Support -->

<bean name="viewResolver"

class="org.springframework.web.servlet.view.BeanNameViewResolver"/>

<bean name="jsonTemplate"

class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/>

</beans>

下面這個(gè)web.xml僅配置了DispatcherServlet,最簡(jiǎn)單的配置便能滿足應(yīng)用程序配置運(yùn)行時(shí)組件的需求。

<web-app>

<display-name>Archetype Created Web Application</display-name>

<servlet>

<servlet-name>spring</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>spring</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

08

Spring提供哪些配置形式

Spring對(duì)Java配置的支持是由@Configuration注解和@Bean注解來(lái)實(shí)現(xiàn)的。由@Bean注解的方法將會(huì)實(shí)例化、配置和初始化一個(gè)新對(duì)象,這個(gè)對(duì)象將由Spring的IoC容器來(lái)管理。@Bean聲明所起到的作用與元素類似。被@Configuration所注解的類則表示這個(gè)類的主要目的是作為Bean定義的資源。被@Configuration聲明的類可以通過(guò)在同一個(gè)類內(nèi)部調(diào)用@bean方法來(lái)設(shè)置嵌入Bean的依賴關(guān)系。

最簡(jiǎn)單的@Configuration 聲明類請(qǐng)參考下面的代碼:

@Configuration

public class AppConfig{

@Bean

public MyService myService() {

return new MyServiceImpl();

}

}

與上面的@Beans配置文件相同的XML配置文件如下:

<beans>

<bean id="myService" class="com.gupaoedu.services.MyServiceImpl"/>

</beans>

上述配置方式的實(shí)例化方式如下:

public static void main(String[] args) {

ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);

MyService myService = ctx.getBean(MyService.class);

myService.doStuff();

}

要使用組件掃描,僅需用@Configuration進(jìn)行注解即可:

@Configuration

@ComponentScan(basePackages = "com.gupaoedu")

public class AppConfig  {

}

在上面的例子中,com.gupaoedu包首先會(huì)被掃描到,然后在容器內(nèi)查找被@Component 聲明的類,找到后將這些類按照Spring Bean定義進(jìn)行注冊(cè)。 

如果你要在Web應(yīng)用開發(fā)中選用上述配置方式,需要用AnnotationConfigWebApplicationContext類來(lái)讀取配置文件,可以用來(lái)配置Spring的Servlet監(jiān)聽器ContrextLoaderListener或者Spring MVC的DispatcherServlet。

例如:

<web-app>

<context-param>

<param-name>contextClass</param-name>

<param-value>

org.springframework.web.context.support.AnnotationConfigWebApplicationContext

</param-value>

</context-param>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>com.gupaoedu.AppConfig</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<servlet>

<servlet-name>dispatcher</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextClass</param-name>

<param-value>

org.springframework.web.context.support.AnnotationConfigWebApplicationContext

</param-value>

</init-param>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>com.gupaoedu.web.MVCConfig</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>/web/*</url-pattern>

</servlet-mapping>

</web-app>

09

怎樣用注解的方式配置Spring

Spring在2.5版本以后開始支持用注解的方式配置依賴注入。可以用注解的方式來(lái)替代XML方式的Bean描述,可以將Bean描述轉(zhuǎn)移到組件類的內(nèi)部,只需要在相關(guān)類上、方法上或者字段聲明上使用注解即可。注解注入將會(huì)被容器在XML注入之前處理,所以后者會(huì)覆蓋前者對(duì)于同一個(gè)屬性的處理結(jié)果。

注解裝配在Spring中是默認(rèn)關(guān)閉的,需要在Spring文件中進(jìn)行配置才能使用基于注解的裝配模式。如果你想要在應(yīng)用程序中使用注解的方式,請(qǐng)參考如下配置:

<beans>

<context:annotation-config/>

</beans>

配置完成以后,就可以用注解的方式在Spring中向?qū)傩浴⒎椒ê蜆?gòu)造方法中自動(dòng)裝配變量。

下面是幾種比較重要的注解類型。

(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。

10

請(qǐng)解釋Spring Bean的生命周期

Spring Bean的生命周期簡(jiǎn)單易懂。在一個(gè)Bean實(shí)例被初始化時(shí),需要執(zhí)行一系列初始化操作以使其達(dá)到可用的狀態(tài)。同樣,當(dāng)一個(gè)Bean不再被調(diào)用時(shí)需要進(jìn)行相關(guān)的析構(gòu)操作,并從Bean容器中移除。

Spring Bean Factory 負(fù)責(zé)管理在Spring容器中被創(chuàng)建的Bean的生命周期。Bean的生命周期由兩組回調(diào)方法組成。 

(1)初始化之后調(diào)用的回調(diào)方法。 

(2)銷毀之前調(diào)用的回調(diào)方法。 

Spring提供了以下4種方式來(lái)管理Bean的生命周期事件:

(1)InitializingBean和DisposableBean回調(diào)接口。

(2)針對(duì)特殊行為的其他Aware接口。

(3)Bean配置文件中的 customInit() 方法和 customDestroy() 方法。

(4)@PostConstruct和@PreDestroy注解方式。

使用customInit()和 customDestroy()方法管理Bean生命周期的代碼樣例如下:

<beans>

<bean id="demoBean" class="com.gupaoedu.task.DemoBean"

init-Method="customInit" destroy-Method="customDestroy">

</bean>

</beans>

更多經(jīng)典高頻面試題

11 Spring Bean作用域的區(qū)別是什么

12 什么是Spring Inner Bean

13 Spring中的單例Bean是線程安全的嗎

14 請(qǐng)舉例說(shuō)明如何在Spring中注入一個(gè)Java集合

15 如何向Spring Bean中注入java.util.Properties

16 請(qǐng)解釋Spring Bean的自動(dòng)裝配

17 自動(dòng)裝配有哪些局限性

18 請(qǐng)解釋各種自動(dòng)裝配模式的區(qū)別

19 請(qǐng)舉例解釋@Required注解

20 請(qǐng)舉例說(shuō)明@Qualifier注解

21 構(gòu)造方法注入和設(shè)值注入有什么區(qū)別

22 Spring中有哪些不同類型的事件

23 FileSystemResource和ClassPathResource有什么區(qū)別

24 Spring中用到了哪些設(shè)計(jì)模式

25 在Spring中如何更有效地使用JDBC

26 請(qǐng)解釋Spring中的IoC容器

27 在Spring中可以注入null或空字符串嗎

題目詳解請(qǐng)見《Spring 5核心原理與30個(gè)類手寫實(shí)戰(zhàn)》一書。

《Spring 5核心原理與30個(gè)類手寫實(shí)戰(zhàn)》一書基于編程開發(fā)實(shí)踐,不僅深度解析Spring 5的原理與新特性,更從環(huán)境準(zhǔn)備、頂層結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)訪問(wèn)等方面一步步地推導(dǎo)出Spring的設(shè)計(jì)原理。在每個(gè)知識(shí)點(diǎn)上,均以大量的經(jīng)典代碼案例輔助講解,使理論緊密聯(lián)系實(shí)際。最后手寫30個(gè)類,以體會(huì)Spring作者的創(chuàng)作過(guò)程,讓每一位讀者學(xué)以致用。

[我要糾錯(cuò)]
[ 編輯:宋聰喬 &發(fā)表于江蘇 ]
關(guān)鍵詞: nbsp 什么 Spring 框架 Spring

來(lái)源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來(lái)源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁(yè)對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。

點(diǎn)個(gè)贊
0
踩一腳
0

您在閱讀:Spring經(jīng)典高頻面試題,原來(lái)是長(zhǎng)這個(gè)樣子

Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司

南京思必達(dá)教育科技有限公司版權(quán)所有   百度統(tǒng)計(jì)

主站蜘蛛池模板: 日韩欧美综合在线 | 国产精品一在线观看 | 99色视频 | 国产色一区 | 成人免费无毒在线观看网站 | 日本亚州视频在线八a | 外国成人xxx在线视频 | 91精品国产三级在线观看 | 澳门一级毛片手机在线看 | 日本成人激情 | 国产在线视频你懂得 | 草草视频手机在线观看视频 | 中文国产成人精品少久久 | 午夜五月天 | freexx性欧美另类hd | 日韩亚洲一区中文字幕在线 | 国产日韩欧美在线观看 | 亚洲精品视频在线免费 | 777国产精品永久免费观看 | 一二三区乱码一区二区三区码 | 成人国产三级在线播放 | 亚洲激情视频 | aⅴ视频在线免播放观看 | 97夜夜澡人人爽人人喊中国片 | 午夜视频色 | 久久精品不卡 | 免费一级毛片女人图片 | 国产精品13页| 插菊花网站 | 天天草视频 | 黄色三级视频在线 | 香蕉国产人午夜视频在线观看 | 国产综合影院 | 成年人免费在线观看网站 | 91亚洲欧美综合高清在线 | 天堂网中文在线 | 人人澡天天澡夜夜澡 | 国产精品亚欧美一区二区三区 | 欧美成人片在线 | 伊人网综合在线视频 | free性欧美高清另类 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價(jià)格低
  • 蘋果原裝手機(jī)殼