您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java中spring的面試題有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中spring的面試題有哪些”吧!
說一下spring中Bean的作用域
singleton:
Spring IoC容器中只會存在一個共享的Bean實例,無論有多少個Bean引用它,始終指向同一對象。Singleton作用域是Spring中的缺省作用域。
prototype:
每次通過Spring容器獲取prototype定義的bean時,容器都將創建一個新的Bean實例,每個Bean實例都有自己的屬性和狀態,而singleton全局只有一個對象。
request:
在一次Http請求中,容器會返回該Bean的同一實例。而對不同的Http請求則會產生新的Bean,而且該bean僅在當前Http Request內有效。
session:
在一次Http Session中,容器會返回該Bean的同一實例。而對不同的Session請求則會創建新的實例,該bean實例僅在當前Session內有效。
global Session:
在一個全局的Http Session中,容器會返回該Bean的同一個實例,僅在使用portlet context時有效。
說一下spring中Bean的生命周期
實例化一個Bean,也就是我們通常說的new。
按照Spring上下文對實例化的Bean進行配置,也就是IOC注入。
如果這個Bean實現了BeanNameAware接口,會調用它實現的setBeanName(String beanId)方法,此處傳遞的是Spring配置文件中Bean的ID。
如果這個Bean實現了BeanFactoryAware接口,會調用它實現的setBeanFactory(),傳遞的是Spring工廠本身(可以用這個方法獲取到其他Bean)。
如果這個Bean實現了ApplicationContextAware接口,會調用setApplicationContext(ApplicationContext)方法,傳入Spring上下文。
如果這個Bean關聯了BeanPostProcessor接口,將會調用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor經常被用作是Bean內容的更改,并且由于這個是在Bean初始化結束時調用After方法,也可用于內存或緩存技術。
如果這個Bean在Spring配置文件中配置了init-method屬性會自動調用其配置的初始化方法。
如果這個Bean關聯了BeanPostProcessor接口,將會調用postAfterInitialization(Object obj, String s)方法。
當Bean不再需要時,會經過清理階段,如果Bean實現了DisposableBean接口,會調用其實現的destroy方法。
最后,如果這個Bean的Spring配置中配置了destroy-method屬性,會自動調用其配置的銷毀方法。
對Spring中依賴注入兩種方式的認識
兩種注入方式為:構造方法注入和設值注入
設值注入與傳統的JavaBean的寫法更相似,程序員更容易理解、接受,通過setter方式設定依賴關系顯得更加直觀、明顯;
對于復雜的依賴關系,如果采用構造注入,會導致構造器過于臃腫,難以閱讀。Spring在創建Bean實例時,需要同時實例化其依賴的全部實例,因而會產生浪費。而使用設置注入,則避免這下問題;
在某些屬性可選的情況下,多參數的構造器更加笨拙,官方更鼓勵使用設值注入。
構造注入可以在構造器中決定依賴關系的注入順序,優先依賴的優先注入。
對于依賴關系無須變化的Bean,構造注入更有用處,因為沒有setter方法,所有的依賴關系全部在構造器內設定,因此,不用擔心后續代碼對依賴關系的破壞。
構造注入使依賴關系只能在構造器中設定,則只有組件的創建者才能改變組件的依賴關系。對組件的調用者而言,組件內部的依賴關系完全透明,更符合高內聚的原則。
設值注入不會重寫構造方法的值。如果我們對同一個變量同時使用了構造方法注入又使用了設置方法注入的話,那么構造方法將不能覆蓋由設值方法注入的值。
建議采用以設值注入為主,構造注入為輔的注入策略。對于依賴關系無須變化的注入,盡量采用構造注入;而其他的依賴關系的注入,則考慮采用set注入。
Spring框架中都用到了哪些設計模式?
代理模式:在AOP和remoting中被用的比較多。
單例模式:在spring配置文件中定義的bean默認為單例模式。
模板方法模式:用來解決代碼重復的問題。
前端控制器模式:Spring提供了DispatcherServlet來對請求進行分發。
依賴注入模式:貫穿于BeanFactory / ApplicationContext接口的核心理念。
工廠模式:BeanFactory用來創建對象的實例。
BeanFactory 和ApplicationContext的區別
BeanFactory和ApplicationContext都是接口,并且ApplicationContext是BeanFactory的子接口。
BeanFactory是Spring中最底層的接口,提供了最簡單的容器的功能,只提供了實例化對象和拿對象的功能。而ApplicationContext是Spring的一個更高級的容器,提供了更多的有用的功能。
ApplicationContext提供的額外的功能:國際化的功能、消息發送、響應機制、統一加載資源的功能、強大的事件機制、對Web應用的支持等等。
加載方式的區別:BeanFactory采用的是延遲加載的形式來注入Bean;ApplicationContext則相反的,它是在Ioc啟動時就一次性創建所有的Bean,好處是可以馬上發現Spring配置文件中的錯誤,壞處是造成浪費。
感謝各位的閱讀,以上就是“Java中spring的面試題有哪些”的內容了,經過本文的學習后,相信大家對Java中spring的面試題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。