SPRING REFERENCE

Spring概念:面試

    Spring在不一樣的背景下意味着不一樣的東西。它能夠用來引用Spring Framework項目自己,它就是一切開始的地方。隨着時間的推移,其餘Spring項目已經構建在Spring Framework之上。大多數狀況下,當人們說「春天」時,他們就意味着整個項目家族。本參考文檔側重於基礎:Spring Framework自己。spring

    Spring框架分爲幾個模塊。應用程序能夠選擇所需的模塊。核心是核心容器的模塊,包括配置模型和依賴注入機制。除此以外,Spring Framework還爲不一樣的應用程序體系結構提供了基礎支持,包括消息傳遞,事務數據和持久性以及Web。它還包括基於Servlet的Spring MVC Web框架,以及Spring WebFlux響應式Web框架。編程

    關於模塊的說明:Spring的框架jar容許部署到JDK 9的模塊路徑(「Jigsaw」)。爲了在支持Jigsaw的應用程序中使用,Spring Framework 5 jar帶有「Automatic-Module-Name」清單條目,它們定義了獨立於jar工件的穩定語言級模塊名稱(「spring.core」,「spring.context」等)名稱(罐子使用相同的命名模式,而不是「。」,例如「spring-core」和「spring-context」)。固然,Spring的框架jar在JDK 8和9+上的類路徑上都能正常工做。設計模式

Spring的歷史和Spring框架:服務器

    Spring於2003年成立,是對早期J2EE規範複雜性的迴應 。雖然有些人認爲Java EE和Spring處於競爭中,但Spring其實是對Java EE的補充。Spring編程模型不包含Java EE平臺規範; 相反,它集成了EE保護傘中精心挑選的個別規格:併發

  • Servlet APIapp

  • WebSocket API框架

  • 併發實用程序測試

  • JSON綁定API搜索引擎

  • Bean驗證

  • JPA

  • JMS

  • 以及必要時用於事務協調的JTA / JCA設置。

    Spring Framework還支持依賴注入和Common Annotations規範,應用程序開發人員能夠選擇使用這些規範,而不是Spring Framework提供的Spring特定機制。

    從Spring Framework 5.0開始,Spring至少須要Java EE 7級別(例如Servlet 3.1 +,JPA 2.1+) - 同時在Java EE 8級別提供與新API的開箱即用集成(例如,Servlet 4.0,JSON綁定API)在運行時遇到。這使Spring與Tomcat 8和9,WebSphere 9和JBoss EAP 7徹底兼容。

    隨着時間的推移,Java EE在應用程序開發中的做用也在不斷髮展。在Java EE和Spring的早期,建立了應用程序以部署到應用程序服務器。今天,在Spring Boot的幫助下,應用程序以devops和雲友好的方式建立,Servlet容器嵌入而且變得微不足道。從Spring Framework 5開始,WebFlux應用程序甚至不直接使用Servlet API,而且能夠在不是Servlet容器的服務器(例如Netty)上運行。

    Spring繼續創新並不斷髮展。除了Spring Framework以外,還有其餘項目,例如Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch等。重要的是要記住每一個項目都有本身的源代碼存儲庫,問題跟蹤器和發佈節奏。有關Spring項目的完整列表,請參見spring.io/projects

spring優勢:                                                        

1. 方便解耦,簡化開發  (高內聚低耦合)

  • Spring就是一個大工廠(容器),能夠將全部對象建立和依賴關係維護,交給Spring管理

  • spring工廠是用於生成bean   (靜態工廠模式)

面試題:spring的IoC(控制反轉)底層用到什麼設計模式?--  靜態工廠模式

2.  AOP編程的支持

  • Spring提供面向切面編程,能夠方便的實現對程序進行權限攔截、運行監控等功能

  • 打印日誌

  • 面試題: aop的底層運用到什麼設計模式? --  動態代理

3.  聲明式事務的支持   (AOP  動態代理)

  • 只須要經過配置就能夠完成對事務的管理,而無需手動編程

4.  方便程序的測試

  • Spring對Junit4支持,能夠經過註解方便的測試Spring程序

  • @RunWith(SpringJUnit4ClassRunner.class)

  • @ContextConfiguration("applicationContext.xml")

5. 方便集成各類優秀框架 *****

  • Spring不排斥各類優秀的開源框架,其內部提供了對各類優秀框架(如:Struts、Hibernate、MyBatis、Quartz(任務調度)等)的直接支持

  • Redis

  • Solr  搜索引擎

  • 消息隊列 ActiveMQ

  • ……

6. 下降JavaEE API的使用難度  EJB

  • Spring 對JavaEE開發中很是難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大下降

相關文章
相關標籤/搜索