面試中怎么回答Spring IOC,AOP


你對spring的理解?

答:spring最重要的兩個機制就是IOC控制反轉和AOP面向切面編程。
IOC容器獲取對象是程序在加載xml配置文件時通過反射調用構造函數來
創建對象(我們開始學就是在xml里配置的),講到控制反轉就要講它的依賴注入模式,
DI依賴注入是控制反轉的一個具體例子,
在xml文件中依賴注入機制是通過ref屬性將其他bean放到當前bean對象,
注入方式有通過配置xml文件注入和注解注入,
在xml文件里注入 :屬性注入(property)、構造器注入(constructor-arg)、自動裝配通過對bean的autowrite屬性指定(byName、byType)
注解注入 :有autowrite、resource、component等

@Autowired和@Resource兩個注解的區別:
    1)、@Autowired默認按照byType方式進行bean匹配,@Resource默認按照byName方式進行bean匹配
    2)、@Autowired是Spring的注解,@Resource是J2EE的注解,

關於IOC大家可以去看看知乎里面的回答,Spring IoC有什么好處呢? - Mingqi的回答 - 知乎 https://www.zhihu.com/question/23277575/answer/169698662
Spring IoC有什么好處呢? - Eric的回答 - 知乎 https://www.zhihu.com/question/23277575/answer/24259844
ioc的思想最核心的地方在於,資源不由使用資源的雙方管理,而由不使用資源的第三方管理,這可以帶來很多好處。第一,資源集中管理,實現資源的可配置和易管理。第二,降低了使用資源雙方的依賴程度,也就是我們說的耦合度。

  • IOC(控制反轉),將類的創建和依賴關系寫配置文件里,由配置文件注入,實現了松耦合。傳統的創建對象的方法是直接通過 new 關鍵字,而 spring 則是通過 IOC 容器來創建對象,也就是說我們將創建對象的控制權交給了 IOC 容器。IOC 讓程序員不再關注怎么去創建對象,而是關注與對象創建之后的操作,把對象的創建、初始化、銷毀等工作交給spring容器來做。

(軟件設計中的“耦合”指,兩個功能函數之間的依賴程度。比如,你設計的一個程序,需要你編寫10個功能函數來實現。如果這10個功能中,有9個功能都要調取第10個功能函數X10,那么,當你在修改X10時,你就要考慮修改完成后,是否會對其它9個功能函數有影響,為了查看是否有不好影響,你就要對其它9個功能函數,一個一個進行測試。所以,為了避免產生這種后期修改的勞動量。就提倡【松耦合】,就是,功能函數之間,盡量依賴程度不要太高。否則,修改完一個底層函數后,會對多個上層函數,進行大量的測試。)

  • 依賴注入(DI機制)(依賴注入(Dependecy Injection)和控制反轉(Inversion of Control)是同一個概念,具體的講:當某個角色需要另外一個角色協助的時候,在傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在spring中創建被調用者的工作不再由調用者來完成,因此稱為控制反轉。創建被調用者的工作由spring來完成,然后注入調用者)
  • AOP(Aspect-Oriented Programming面向層面的編程)將安全、事務等,於邏輯相對獨立的功能抽取出來,利用spring的配置文件將這些功能插進去,實現了按照切面編程,提高了復用性。Spring支持面向切面的編程,並且把應用業務邏輯和系統服務分開,
    AOP簡單地說,就是將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重復代碼,降低模塊間的耦合度,並有利於未來的可操作性和可維護性。AOP代表的是一個橫向的關系,如果說“對象”是一個空心的圓柱體,其中封裝的是對象的屬性和行為;那么面向方面編程的方法,就仿佛一把利刃,將這些空心圓柱體剖開,以獲得其內部的消息。AOP中的jdk動態代理是通過反射機制實現的,還有一個是CGLIB動態代理。(Spring AOP的底層實現有兩種方式:一種是JDK動態代理,另一種是CGLib的方式)

          Spring AOP中的JDK和CGLib動態代理哪個效率更高?
          https://blog.csdn.net/xlgen157387/article/details/82497594

spring主要由以下幾個模塊組成:

  • Spring Core:核心類庫,提供IOC控制反轉服務;也稱核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉(IOC) 模式將應用程序的配置和依賴性規范與實際的應用程序代碼分開。
  • Spring Context:提供框架式的Bean訪問方式,以及企業級功能;
  • Spring AOP;AOP面向切面編程;
  • Spring DAO:對JDBC的抽象,JDBCDAO抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,並且極大地降低了需要編寫的異常代碼數量(例如打開和關閉連接)。
  • Spring ORM:對現有的ORM框架的支持;
  • Spring Web:提供了基本的面向Web的綜合特性,例如多方文件上傳;
  • SpringMVC:提供面向Web應用的Model-View-Controller實現;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM