1. 程式人生 > >我們一起學習Spring之Spring簡介(一)

我們一起學習Spring之Spring簡介(一)

邏輯 style 發的 nfa 不同的 構建 john 局限 認識

  首先聲明,我是一個spring初學者,寫這篇blog的目的是為了能和大家交流。文中不當之處還望大佬指出,不勝感激!

  好了,現在我們開始進入正題。

  很多小夥伴在學習Java的時候都會有人建議你去學習Spring,那麽什麽是Spring呢?SPring是由Rod Johnson創建的一款開源的輕量級Java框架。Spring的誕生之初是為了解決企業級Java開發的復雜性,使得我們通過簡單的javaBean能夠實現以前只有使用EJB(Enterprise JavaBean)才能完成的一些事情。但是Spring不僅僅局限於服務器端的開發,任何的Java應用都能夠在Spring中獲益。

  前面說到Spring是為了簡化Java的開發,降低Java開發的復雜性,那麽Spring在這方面采取了什麽策略呢?Spring在這方面采取了4種關鍵的策略:

    1.基於POJO的輕量級和最小侵入性編程;

    2.通過依賴註入和面向接口實現松耦合;

    3.基於切面和慣例進行聲明式編程;

    4.通過切面和模板減少樣板式代碼。

下面從整體上認識一下Spring的主要特征:

*輕量:從大小與開銷兩方面而言Spring都是輕量的。此外,Spring是非侵入式的:使用Spring,我們的類還是pojo類,完全不用繼承和實現Spring的類和接口等。 也就是說,使用Spring的應用中的對象不依賴於Spring的特定類。

*IoC:Spring通過控制反轉技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。可以認為IoC與JNDI相反--不是我們自己控制對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它,這就是DI--依賴註入。 基本上就是對象不用自己動手管理和創建。完全由容器管理,我們只管用就行。

*AOP:Spring提供了面向切面的編程支持,AOP將與程序業務無關的內容分離提取,應用對象只實現它們應該做的--完成業務邏輯--僅此而已。它們並不負責其它的系統級關註點,例如日誌或事務支持。 AOP將與業務無關的邏輯橫切進真正的邏輯中。

*框架:Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件裏。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),而用戶就有更多的時間和精力去開發應用邏輯。 所有Spring的這些特征都能幫助我們夠編寫更幹凈、更可管理、並且更易於測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。

*借助Spring,榮國依賴註入,AOP應用,面向接口編程,來降低業務組件之間的耦合度,增強系統的擴展性。

* 讓已有的技術和框架更加易用。

*利用其對hibernate的SessionFactory、事務管理的封裝,更簡潔的應用hibernate.

*Spring並不完全依賴於Spring,開發者可自由選用Spring框架的部分或全部 *利用AOP思想,集中處理業務邏輯,減少重復代碼,構建優雅的解決方案。

*低侵入式設計,代碼汙染極低。 Spring致力於J2EE應用的各層的解決方案,而不是僅僅專註於某一層的方案。可以說Spring是企業應用開發的"一站式"選擇,並貫穿表現層、業務層及持久層。 雖然Spring可以一站式解決整個項目問題,但是Spring並不想取代那些已有的框架,而是與它們無縫地整合。Spring可以降低各種框架的使用難度,他提供了對各種優秀框架(如Struts、Hibernate、Hessian、Quartz等)的直接支持。 使用Spring的主要目的是使J2EE易用和促進好的編程習慣,Spring的目標就是讓已有的技術更加易用。 所以Spring的一個重要思想就是整合和兼容。

首先我們先來看一下Spring是如何做到基於POJO的最小入侵性編程的。

  A.激發POJO的潛能

  Spring是竭力避免因為自身的API而弄亂使用者的應用代碼的,同樣不會強迫開發者繼承實現的Spring的接口或者繼承規範的Spring類。與其他的Java框架不同的是,Spring在構建基於Spring的應用的時候,通常不會有任何痕跡表明這是使用了Spring的。

  例如:

1 package spring;
2 public class HelloWorldBaen{
3       public String sayHelloWorld(){
4             return "Hello World!";
5     }  
6 }    

可以看出來這是一個簡單的Java類——POJO。沒有任何的地方表示是一個Spring組件。Spring的非入侵性編程就是這個類在Spring和非Spring應用中都能發揮同樣的作用。

PS:文中若有不當之處,請各位在評論區指正。謝謝!2017-11-12

我們一起學習Spring之Spring簡介(一)