亚洲免费人人妻人人,cao78在线视频,福建一级毛片,91精品视频免费观看,高清另类图片操逼,日本特黄特色大片免费看,超碰欧美人人澡曰曰澡夜夜泛

69道Spring面試題和答案(2)

學(xué)人智庫(kù) 時(shí)間:2018-02-10 我要投稿
【www.msguai.com - 學(xué)人智庫(kù)】

  這實(shí)現(xiàn)包括屬性,它的Setter , getter 方法和函數(shù)等。

  Spring AOP。

  Spring 的XML 配置文件。

  使用以上功能的客戶端程序。

  依賴注入

  18. 什么是Spring的依賴注入?

  依賴注入,是IOC的一個(gè)方面,是個(gè)通常的概念,它有多種解釋。這概念是說(shuō)你不用創(chuàng)建對(duì)象,而只需要描述它如何被創(chuàng)建。你不在代碼里直接組裝你的組件和服務(wù),但是要在配置文件里描述哪些組件需要哪些服務(wù),之后一個(gè)容器(IOC容器)負(fù)責(zé)把他們組裝起來(lái)。

  19. 有哪些不同類型的IOC(依賴注入)方式?

  構(gòu)造器依賴注入:構(gòu)造器依賴注入通過(guò)容器觸發(fā)一個(gè)類的構(gòu)造器來(lái)實(shí)現(xiàn)的,該類有一系列參數(shù),每個(gè)參數(shù)代表一個(gè)對(duì)其他類的依賴。

  Setter方法注入:Setter方法注入是容器通過(guò)調(diào)用無(wú)參構(gòu)造器或無(wú)參static工廠 方法實(shí)例化bean之后,調(diào)用該bean的setter方法,即實(shí)現(xiàn)了基于setter的依賴注入。

  20. 哪種依賴注入方式你建議使用,構(gòu)造器注入,還是 Setter方法注入?

  你兩種依賴方式都可以使用,構(gòu)造器注入和Setter方法注入。最好的解決方案是用構(gòu)造器參數(shù)實(shí)現(xiàn)強(qiáng)制依賴,setter方法實(shí)現(xiàn)可選依賴。

  Spring Beans

  21.什么是Spring beans?

  Spring beans 是那些形成Spring應(yīng)用的主干的java對(duì)象。它們被Spring IOC容器初始化,裝配,和管理。這些beans通過(guò)容器中配置的元數(shù)據(jù)創(chuàng)建。比如,以XML文件中 的形式定義。

  Spring 框架定義的beans都是單件beans。在bean tag中有個(gè)屬性”singleton”,如果它被賦為TRUE,bean 就是單件,否則就是一個(gè) prototype bean。默認(rèn)是TRUE,所以所有在Spring框架中的beans 缺省都是單件。

  22. 一個(gè) Spring Bean 定義 包含什么?

  一個(gè)Spring Bean 的定義包含容器必知的所有配置元數(shù)據(jù),包括如何創(chuàng)建一個(gè)bean,它的生命周期詳情及它的依賴。

  23. 如何給Spring 容器提供配置元數(shù)據(jù)?

  這里有三種重要的方法給Spring 容器提供配置元數(shù)據(jù)。

  XML配置文件。

  基于注解的配置。

  基于java的配置。

  24. 你怎樣定義類的作用域?

  當(dāng)定義一個(gè) 在Spring里,我們還能給這個(gè)bean聲明一個(gè)作用域。它可以通過(guò)bean 定義中的scope屬性來(lái)定義。如,當(dāng)Spring要在需要的時(shí)候每次生產(chǎn)一個(gè)新的bean實(shí)例,bean的scope屬性被指定為prototype。另一方面,一個(gè)bean每次使用的時(shí)候必須返回同一個(gè)實(shí)例,這個(gè)bean的scope 屬性 必須設(shè)為 singleton。

  25. 解釋Spring支持的幾種bean的作用域。

  Spring框架支持以下五種bean的作用域:

  singleton : bean在每個(gè)Spring ioc 容器中只有一個(gè)實(shí)例。

  prototype:一個(gè)bean的定義可以有多個(gè)實(shí)例。

  request:每次http請(qǐng)求都會(huì)創(chuàng)建一個(gè)bean,該作用域僅在基于web的Spring ApplicationContext情形下有效。

  session:在一個(gè)HTTP Session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)實(shí)例。該作用域僅在基于web的Spring ApplicationContext情形下有效。

  global-session:在一個(gè)全局的HTTP Session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)實(shí)例。該作用域僅在基于web的Spring ApplicationContext情形下有效。

  缺省的Spring bean 的作用域是Singleton.

  26. Spring框架中的單例bean是線程安全的嗎?

  不,Spring框架中的單例bean不是線程安全的。

  27. 解釋Spring框架中bean的生命周期。

  Spring容器 從XML 文件中讀取bean的定義,并實(shí)例化bean。

  Spring根據(jù)bean的定義填充所有的屬性。

  如果bean實(shí)現(xiàn)了BeanNameAware 接口,Spring 傳遞bean 的ID 到 setBeanName方法。

  如果Bean 實(shí)現(xiàn)了 BeanFactoryAware 接口, Spring傳遞beanfactory 給setBeanFactory 方法。

  如果有任何與bean相關(guān)聯(lián)的BeanPostProcessors,Spring會(huì)在postProcesserBeforeInitialization()方法內(nèi)調(diào)用它們。

  如果bean實(shí)現(xiàn)IntializingBean了,調(diào)用它的afterPropertySet方法,如果bean聲明了初始化方法,調(diào)用此初始化方法。

  如果有BeanPostProcessors 和bean 關(guān)聯(lián),這些bean的postProcessAfterInitialization() 方法將被調(diào)用。

  如果bean實(shí)現(xiàn)了 DisposableBean,它將調(diào)用destroy()方法。

  28. 哪些是重要的bean生命周期方法? 你能重載它們嗎?

  有兩個(gè)重要的bean 生命周期方法,第一個(gè)是setup , 它是在容器加載bean的時(shí)候被調(diào)用。第二個(gè)方法是 teardown 它是在容器卸載類的時(shí)候被調(diào)用。

  The bean 標(biāo)簽有兩個(gè)重要的屬性(init-method和destroy-method)。用它們你可以自己定制初始化和注銷方法。它們也有相應(yīng)的注解(@PostConstruct和@PreDestroy)。

  29. 什么是Spring的內(nèi)部bean?

  當(dāng)一個(gè)bean僅被用作另一個(gè)bean的屬性時(shí),它能被聲明為一個(gè)內(nèi)部bean,為了定義inner bean,在Spring 的 基于XML的 配置元數(shù)據(jù)中,可以在 或 元素內(nèi)使用 元素,內(nèi)部bean通常是匿名的,它們的Scope一般是prototype。

  30. 在 Spring中如何注入一個(gè)java集合?

  Spring提供以下幾種集合的配置元素:

  類型用于注入一列值,允許有相同的值。

   類型用于注入一組值,不允許有相同的值。

  類型用于注入一組鍵值對(duì),鍵和值都可以為任意類型。

  類型用于注入一組鍵值對(duì),鍵和值都只能為String類型。