牛客網中Spring的理解

Spring官方文檔:http://shouce.jb51.net/spring
依賴注入就是通過容器去管理對象,而不是對象本身去管理;
1、Spring中對IOC的理解:
所謂“控制反轉”是指控制權由應用代碼轉到外部容器,即控制權的轉移;
IoC將控制創建的職責搬進了框架中,從應用代碼脫離開來;
使用Spring的IoC容器時只需指出組件需要的對象,在運行時Spring的IoC容器會根據XML配置數據提供給它;
控制反轉即IoC (Inversion of Control),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。它把傳統上由程序代碼直接操控的對象的調用權交給容器,通過容器來實現對象組件的裝配和管理。所謂的“控制反轉”概念就是對組件對象控制權的轉移,從程序代碼本身轉移到了外部容器。
2、Spring中對AOP的理解:
AOP將散落在系統中的“方面”代碼集中實現;
AOP有助於提高系統可維護性;
AOP是一種設計模式,Spring提供了一種實現;
AOP的概念是Aspected Oriented Programming 面向方面編程。
好處:AOP將程序分解成各個方面或者說關注點。這使得可以模塊化,相當橫向上分切了。它可以解決OOP和過程化方法不能夠很好解決的橫切(crosscut)問題,如:事務、安全、日誌等橫切關注
實現AOP有幾種方式:

  1. Spring 1.2版本中通過ProxyFactoryBean來實現aop,即通過動態代理來實現的,Aspect必須繼承MethodBeforeAdvice,MethodAfterAdvice等
  2. Spring 2.0 AOP需要改的是FBI 這個類,而且它也不需要再實現某些接口
  3. 三使用標註(@AspectJ)實現AOP
    3、基於Servlet API如何實現轉向時不在地址欄中顯示轉向後的地址:forward ( )
    4、Springmvc和Struts2的區別:
    Springmvc的入口是servlet,而Struts2的入口是filter;
    Springmvc是基於方法的設計,而Struts2是基於類的設計;
    Springmvc用的是獨立的AOP方式,Struts2有以自己的interceptor機制;
    Springmvc的方法之間基本上獨立的,獨享request response數據,Struts2所有Action變量是共享的;
    5、Servlet的理解:
    Servlet是一個特殊的Java類,它必須直接或間接實現Servlet接口;
    Servlet接口定義了Servelt的生命週期方法;
    當多個客戶請求一個Servlet時,服務器爲每一個客戶啓動一個線程;
    Servlet客戶線程調用service方法響應客戶的請求;
    6、Spring中對Bean的理解:
    如果Bean類有實現org.springframework.beans.factory.BeanFactoryAware接口,工廠調用setBeanFactory()方法傳入工廠自身;
    在Spring中,Bean的scope默認是singleton的,也就是“單例”。一個Spring容器中只有一個Bean的實例,此爲Spring的默認配置,全容器共享一個實例;
    可以在Bean定義文件中使用"init-method"屬性,執行到這個階段時,就會執行initBean()方法;
    如果Bean類有實現org.springframework.beans.factory.DisposableBean接口,則執行他的destroy()方法;
    7、Spring框架模塊的理解:
    Spring Core:Core封裝包是框架的最基礎部分,提供IOC和依賴注入特性;
    AOP模塊提供了AOP(攔截器)機制,並提供常用的攔截器,供用戶自定義和配置;
    ORM模塊值提供了常用的“對象/關係”映射APIs的集成層,並不包括spring自己的實現,spring自己的實現只定義在dao模塊中;
    DAO模塊Spring 提供對JDBC的支持,對JDBC進行封裝,允許JDBC使用Spring資源,並能統一管理JDBC事物,並不對JDBC進行實現;
    8、Spring的理解:
    在Spring配置文件中,就可以設置Bean初始化函數和消亡函數;
    對象的設計應使類和構件之間的耦合最小;
    9、Spring依賴注入的理解:
    依賴注入通常有如下兩種:設置注入和構造注入;
    構造注入可以在構造器中決定依賴關係的注入順序,優先依賴的優先注入;
    在沒有設值注入的情況下才會根據配置文件中的構造注入,一旦有設值注入,則構造注入失效;
    設值注入是指IoC容器使用屬性的setter方法來注入被依賴的實例。這種注入方式比較簡單、直觀;
    10、Spring事務的理解:
    spring事務可以分爲編程式事務和聲明式事務;
    spring提供了一個事務的接口 PlatformTransactionManager接口,針對不同的事務,spring進行了不同的實現;
    聲明式事務最大的優點就是不需要通過編程的方式管理事務,這樣就不需要在業務邏輯代碼中摻雜事務管理的代碼;
    如果應用中有大量的事務操作,可以使用聲明式事務,簡單且高效。如果事務操作很少,直接用編程;
    11、Springmvc中核心控制器DispatcherServlet的理解:
    它負責處理HTTP請求;
    加載配置文件;
    初始化上下應用對象ApplicationContext;
    12、Spring中事務傳播特性的理解:
    PROPAGATION_SUPPORTS:支持當前事務,如果當前沒有事務,就以非事務方式執行;
    PROPAGATION_REQUIRED–支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇;
    PROPAGATION_REQUIRES_NEW:新建事務,如果當前存在事務,把當前事務掛起;
    PROPAGATION_NESTED:支持當前事務,新增Savepoint點,與當前事務同步提交或回滾;
    13、Spring DAO的理解:
    Spring提供的DAO(數據訪問對象)支持主要的目的是便於以標準的方式使用不同的數據訪問技術;
    方便的事務管理: Spring的聲明式事務管理力度是方法級別;Struts2是類級別的;
    異常包裝:Spring能夠包裝Hibernate異常,把它們從CheckedException變爲RuntimeException; 開發者可選擇在恰當的層處理數據中不可恢復的異常,從而避免煩瑣的 catch/throw 及異常聲明;
    Spring提供的DAO支持了JDBC、JDO和Hibernate;
    14、Servlet中實現重定向的方法:
    運用javax.servlet.http.HttpServletRequest接口的sendRedirect方法;
    運用javax.servlet.RequestDispatcher接口的forward方法;
    運用javax.servlet.ResponseDispatcher接口的forward方法;
    15、Spring的PROPAGATION_REQUIRES_NEW事務的理解:
    內部事務回滾會導致外部事務回滾;
    外部事務回滾了,內部事務也跟着回滾;
    外部事務回滾了,內部事務仍然可以提交;
    16、Spring的理解:
    Spring是一系列輕量級Java EE框架的集合;
    Spring中包含一個“依賴注入”模式的實現;
    使用Spring可以實現聲明式事務;
    17、Spring框架中的核心思想包括:
    依賴注入、控制反轉、面向切面
    18、Spring框架中獲取連接池的方式:
    DBCP數據源、C3P0數據源、Spring的數據源實現類(DriverManagerDataSource)、獲取JNDI數據源。
    19、Spring中AOP的理解:
    AOP將散落在系統中的“方面”代碼集中實現;
    AOP有助於提高系統可維護性;
    AOP是一種設計模式,Spring提供了一種實現;
    20、Spring的理解:
    Spring 不能和Hibernate一樣設置bean是否爲延遲加載;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章