1. 程式人生 > >Spring面試題

Spring面試題

destory filesyste 復用 rabl save jdk 代碼 解決 ont

  1. 什麽是Spring

    • Spring是一個輕量級的容器,他實現了IOC和非侵入的框架,並提供了AOP的實現方式,提供了持久層事務的支持,其讓java開發模塊化,並且貫穿持久層,邏輯層,表現層,讓每一個模塊都可以獨立分開,降低耦合,提高代碼復用率.
  2. Spring的好處

    • Spring提供了IOC和DI,將管理和維護對象的工作交給了Spring

    • Spring比較輕量級

    • Spring並不排斥其他框架,所以其他框架和Spring整合變得很容易

    • Spring提供了SpringMVC

    • Spring提供了便捷的事務控制

  3. SpringIOC和DI

    • IOC是將維護對象和創建對象的工作交給Spring,而不用我們自己去創建和維護

    • DI是註入對象中所需要的屬性

  4. DI的三種方式

    • 構造方法

    • set方法

    • 接口

  5. BeanFactory 和ApplicationContext的區別

    • 首先BeanFactory和ApplicationContext都是接口,並且ApplicationContext是BeanFactory的子接口。

    • 其次BeanFactory是Spring中最底層的接口,提供了最簡單的容器的功能,只提供了實例化對象和拿對象的功能

    • ApplicationContext(應用上下文)它是Spring的一個更高級的容器,提供了更多的有用的功能,ApplicationContext繼承了BeanFactory接口,所以,ApplicationContext也能像BeanFactory從容器中得到Bean(繼承至 ListableBeanFactory).

    • 加載方式不同,BeanFactory采用的是延遲加載的形式來註入Bean,即只有在使用某個bean的時候,才對該Bean進行加載實例化.

    • ApplicationContext則相反的,它是在Ioc容易啟動時就一次性創建所有的Bean,

  6. 常見的ApplicationContext的實現方式

    • ClassPathXmlApplicationContext

    • FileSystemXmlApplicationContext

    • XmlWebApplicationContext

  7. SpringBean的作用域

    • Singleton 單例

    • Prototype 多例

    • Request request生命周期內

    • Session session生命周期內

    • global-session

  8. 註解的方式配置Bean

    • 在spring配置文件中設置<context:annotation-config/>

    • @Autowired 按照類型進行匹配

    • @Qualifier("student") 按照id進行匹配

    • @Resource(name="student") // 有參數 用參數和id做匹配,如果沒有則先用變量名和id,再用類型匹配

  9. 默認一個bean是在Spring容器初始化加載,如果設置lazy-init或者為其他作用域,則會在使用到bean的時候初始化(init ,destory)

  10. 什麽是Spring inner beans

    • 即Spring內部Bean,在一個Bean的內部定義另一個Bean
  11. Spring事件(5種)

    • 上下文更新事件(ContextRefreshedEvent):該事件會在ApplicationContext被初始化或者更新時發布,也可以在調用ConfigurableApplicationContext接口中的refresh()方法時被觸發。

    • 上下文開始事件(ContextStartedEvent): 當容器調用ConfigurableApplicationContext的Start()方法開始/重新開始容器時被觸發。

    • 上下文停止事件(ContextStoppedEvent): 當容器調用ConfigurableApplicationContext的Stop()方法停止容器時觸發該事件。

    • 上下文關閉事件(ContextClosedEvent): 當ApplicationContext被關閉時觸發該事件。容器被關閉時,其管理的所有單例Bean都被銷毀。

    • 請求處理事件(RequestHandledEvent): 在Web應用中,當一個http請求(request)結束觸發該事件。

    • 允許用戶自定義事件,繼承ApplicationEvent,並且還要創建一個監聽器

  12. 用到了那些設計模式

    • 代理模式—在AOP和remoting中被用的比較多。

    • 單例模式—在spring配置文件中定義的bean默認為單例模式

    • 模板方法—用來解決代碼重復的問題。

    • 前端控制器—Spring提供了DispatcherServlet來對請求進行分發。

    • 工廠模式—BeanFactory用來創建對象的實例。

    • 依賴註入—貫穿於BeanFactory / ApplicationContext接口的核心理念。

    • 視圖幫助(View Helper )

  13. aop

    • 將通用的代碼從業務中分離出來,簡化代碼.使用的為jdk代理和cglib代理

    • 連接點 : 在方法的執行前後和拋出異常可以作為連接點,即將增強和目標方法連接的地方.

    • 切入點 : 在某個方法被調用的時候,這個方法上的連接點變為切入點

    • 增強 : 目標方法除了核心業務以外的所需要的方法, 比如在save()方法中,save()為核心方法,開啟事務為非核心方法,可以抽離出來, 在AOP中開啟事務就叫做增強

    • 切面 : 除了目標方法所在的類以外其他的類

    • 代理 : 將目標方法和增強結合在一起

    • 織入 : 生成代理類的過程

  14. 事務

    • Spring內置了事務管理器,配置一下就好

    • 有配置式和聲明式兩種方法

Spring面試題