Java面试题2019简书_2019最新Spring面试题大全含答案之Spring Beans(2019最全Spring超级葵花宝典)...
1.什么是Spring beans?
Spring beans 是那些形成Spring應用的主干的java對象。它們被Spring IOC容器初始化,裝配,和管理。這些beans通過容器中配置的元數據創建。比如,以XML文件中 的形式定義。
Spring 框架定義的beans都是單件beans。在bean tag中有個屬性”singleton”,如果它被賦為TRUE,bean 就是單件,否則就是一個 prototype bean。默認是TRUE,所以所有在Spring框架中的beans 缺省都是單件。
2. 一個 Spring Bean 定義 包含什么?
一個Spring Bean 的定義包含容器必知的所有配置元數據,包括如何創建一個bean,它的生命周期詳情及它的依賴。
3. 如何給Spring 容器提供配置元數據?
這里有三種重要的方法給Spring 容器提供配置元數據。
XML配置文件。
基于注解的配置。
基于java的配置。
4. 你怎樣定義類的作用域?
當定義一個 在Spring里,我們還能給這個bean聲明一個作用域。它可以通過bean 定義中的scope屬性來定義。如,當Spring要在需要的時候每次生產一個新的bean實例,bean的scope屬性被指定為prototype。另一方面,一個bean每次使用的時候必須返回同一個實例,這個bean的scope 屬性 必須設為 singleton。
5. 解釋Spring支持的幾種bean的作用域
Spring框架支持以下五種bean的作用域:
singleton : bean在每個Spring ioc 容器中只有一個實例。
prototype:一個bean的定義可以有多個實例。
request:每次http請求都會創建一個bean,該作用域僅在基于web的Spring ApplicationContext情形下有效。
session:在一個HTTP Session中,一個bean定義對應一個實例。該作用域僅在基于web的Spring ApplicationContext情形下有效。
global-session:在一個全局的HTTP Session中,一個bean定義對應一個實例。該作用域僅在基于web的Spring ApplicationContext情形下有效。
缺省的Spring bean 的作用域是Singleton。
6. Spring框架中的單例bean是線程安全的嗎?
不,Spring框架中的單例bean不是線程安全的。
7. 解釋Spring框架中bean的生命周期
Spring容器 從XML 文件中讀取bean的定義,并實例化bean。
Spring根據bean的定義填充所有的屬性。
如果bean實現了BeanNameAware 接口,Spring 傳遞bean 的ID 到 setBeanName方法。
如果Bean 實現了 BeanFactoryAware 接口, Spring傳遞beanfactory 給setBeanFactory 方法。
如果有任何與bean相關聯的BeanPostProcessors,Spring會在postProcesserBeforeInitialization()方法內調用它們。
如果bean實現IntializingBean了,調用它的afterPropertySet方法,如果bean聲明了初始化方法,調用此初始化方法。
如果有BeanPostProcessors 和bean 關聯,這些bean的postProcessAfterInitialization() 方法將被調用。
如果bean實現了 DisposableBean,它將調用destroy()方法。
8. 哪些是重要的bean生命周期方法? 你能重載它們嗎?
有兩個重要的bean 生命周期方法,第一個是setup , 它是在容器加載bean的時候被調用。第二個方法是 teardown 它是在容器卸載類的時候被調用。
The bean 標簽有兩個重要的屬性(init-method和destroy-method)。用它們你可以自己定制初始化和注銷方法。它們也有相應的注解(@PostConstruct和@PreDestroy)。
9. 什么是Spring的內部bean?
當一個bean僅被用作另一個bean的屬性時,它能被聲明為一個內部bean,為了定義inner bean,在Spring 的 基于XML的 配置元數據中,可以在 或 元素內使用 元素,內部bean通常是匿名的,它們的Scope一般是prototype。
10. 在 Spring中如何注入一個java集合?
Spring提供以下幾種集合的配置元素:
類型用于注入一列值,允許有相同的值。
類型用于注入一組值,不允許有相同的值。
類型用于注入一組鍵值對,鍵和值都可以為任意類型。
類型用于注入一組鍵值對,鍵和值都只能為String類型。
11. 什么是bean裝配?
裝配,或bean 裝配是指在Spring 容器中把bean組裝到一起,前提是容器需要知道bean的依賴關系,如何通過依賴注入來把它們裝配到一起。
12. 什么是bean的自動裝配?
Spring 容器能夠自動裝配相互合作的bean,這意味著容器不需要和配置,能通過Bean工廠自動處理bean之間的協作。
13. 解釋不同方式的自動裝配
有五種自動裝配的方式,可以用來指導Spring容器用自動裝配方式來進行依賴注入
no:默認的方式是不進行自動裝配,通過顯式設置ref 屬性來進行裝配。
byName:通過參數名 自動裝配,Spring容器在配置文件中發現bean的autowire屬性被設置成byname,之后容器試圖匹配、裝配和該bean的屬性具有相同名字的bean。
byType:通過參數類型自動裝配,Spring容器在配置文件中發現bean的autowire屬性被設置成byType,之后容器試圖匹配、裝配和該bean的屬性具有相同類型的bean。如果有多個bean符合條件,則拋出錯誤。
constructor:這個方式類似于byType, 但是要提供給構造器參數,如果沒有確定的帶參數的構造器參數類型,將會拋出異常。
autodetect:首先嘗試使用constructor來自動裝配,如果無法工作,則使用byType方式。
14.自動裝配有哪些局限性?
自動裝配的局限性是:
重寫:你仍需用 和 配置來定義依賴,意味著總要重寫自動裝配。
基本數據類型:你不能自動裝配簡單的屬性,如基本數據類型,String字符串,和類。
模糊特性:自動裝配不如顯式裝配精確,如果有可能,建議使用顯式裝配。
15. 你可以在Spring中注入一個null 和一個空字符串嗎?
可以。
想要成為一個優秀的程序員的伙伴們來說,想要成為一個優秀的、有能力程序員的話,其實作為一個開發者或者編程學習者,有一個學習的氛圍跟交流圈子特別重要!這里我推薦一個Java交流Q-群,708-701-457,不管你是大牛還是小白,大家都一起成長進步。
群內還有免費的學習、面試資料提供
image
總結
以上是生活随笔為你收集整理的Java面试题2019简书_2019最新Spring面试题大全含答案之Spring Beans(2019最全Spring超级葵花宝典)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中报错convension_La
- 下一篇: php 判断两个数组差集,php arr