{eval=Array;=+count(Array);}
spring之所以崛起是因為它有著最重要的特性-IOC!
IOC:即Inversion of control,意為控制反轉,原本兩個互相依賴的類,需要通過new對象的方式,然后提供方法調用,這樣類中會出現大量的new(比如類中有十個方法,每個方法都要new一次),這個對象創建的方式是開發者自己主觀控制的,而引入了IOC之后,通過依賴注入(DI,IOC的主要實現方式)需要依賴的類,然后會在運行使用的時候,由容器自行創建一個實例對象提供使用,實現了容器對對象的控制,這樣就實現了對象控制的反轉!
spring又是如何實現IOC的呢?我們知道spring項目會使用xml配置(bean定義)或者注解(@service.@component等)進行對象的定義,其中包括了需要管理的對象的類路徑,在spring容器啟動的時候,會通過BeanFactory(當然通常是這個接口的實現ApplicationContext)將類路徑以hashMap的方式進行存儲,然后再需要使用的時候取出類路徑,再通過反射技術(class.forName)得到相應的實例對象,并把對象引用傳遞(注入)給依賴的類中,進行使用!
當然,除了IOC和DI,spring鼎鼎大名的還有AOP(Aspect Oreinted Programming)功能,意為面向切面編程,通過對一個方法的切入,可以在方法前置,后置等進行處理!對諸如日志打印,前置安全檢驗,攔截等都可以通過AOP進行實現,而原本的方法不需要感知這些操作,專注于業務功能開發,這樣徹底解耦了技術和業務代碼的實現!
不僅如此,spring還提供了對于其他功能框架良好的支持和擴展,比如緩存,事務,數據庫連接,安全認證,測試等等都能有插件化的支持,方便基于spring搭建一套完整的,功能齊備的應用!
現在的spring家族,因為加入了springboot,springcloud等成熟,集成化的框架,對開發者來說更是福音!不僅對各種功能有著開箱即用的便利,還能快速搭建一套微服務,對于服務注冊與發現,網關,雪崩熔斷等都有集成使用!隨著微服務的進程逐漸加快,可以說spring還必將大放光彩!
spring不僅解耦了對象關聯,還解耦了業務和技術,同事提供了成熟的集成方案,是JAVA開發者沒辦法拒絕的框架,spring說到這,更多的技術分享,敬請關注。。。
提起Spring,就不得不提重要的兩大特性IOC(控制反轉)和AOP(面向切面編程);
IOC 控制反轉,就是在使用Spring之前,我們想要使用某個類的方法,只能通過new這個類的對象來調用方法,當然類方法除外;使用一次就得不停的new對象。使用了Spring之后,對象的創建就不在依賴程序員手動創建了,而是通過IOC容器,來創建與管理,創建出來的對象有一個統一的名稱叫做Bean,在需要使用的時候通過java的反射機制,將這些bean注入需要使用對象中。而我們常說的DI(依賴注入)是實現控制的反轉的一種方式。
AOP 面向切面編程,說的直白點就是通過一個方法作為切入點,在方法的前后做增強處理,常用的場景為:操作數據庫的事務和日志打印,API入參處理。
2
回答10
回答0
回答8
回答0
回答0
回答4
回答0
回答0
回答10
回答