J J2EE 和spring的發展歷史


 轉:14時就用spring 4, 18年springboot 2.0

Spring1.0      2004年3月24   
包含IoC,AOP,XML配置
參考https://spring.io/blog/2004/03/24/spring-framework-1-0-final-released
Spring 2.0     2006年10月3
參考https://spring.io/blog/2006/10/03/spring-2-0-final-released
Spring 2.5     2007年11月19
支持注解,減少了xml配置
參考https://spring.io/blog/2007/11/19/spring-framework-2-5-released
Spring 3.0     2009年12月16
完全利用了Java5中的改進,並為 JEE6 提供了支持。支持Java配置
參考https://spring.io/blog/2009/12/16/spring-3-0-0-is-now-available
Spring 4.0     2013年11月1   
完全支持 JAVA8 
參考https://spring.io/blog/2013/11/01/spring-framework-4-0-rc1-available
Spring 5.0     2017年9月28
參考https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga     
What's New in Version 5.0
JDK 8+ and Java EE 7+ Baseline(JDK8和Java EE7為基礎。兼容JDK9和Java EE8)
Removed Packages, Classes and Methods(移除部分包,類和方法)
General Core Revision(核心版本的升級)
Core Container(核心容器升級,支持@Nullable注解)
Spring WebFlux(響應式編程)
Kotlin support(支持Kotlin)
Testing Improvements(支持Junit5)
 
SpringBoot 1.0    2014年1月22
參考https://spring.io/blog/2014/01/22/spring-boot-1-0-0-rc1-released
SpringCloud 1.0    2015年3月14
參考https://spring.io/blog/2015/03/04/spring-cloud-1-0-0-available-now
SpringBoot 1.2.5    2015年7月2
參考https://spring.io/blog/2015/07/02/spring-boot-1-2-5-released
SpringBoot 1.3.5    2016年5月10
參考https://spring.io/blog/2016/05/10/spring-boot-1-3-5-released
SpringBoot 1.4.0    2016年7月28
參考https://spring.io/blog/2016/05/10/spring-boot-1-3-5-released
SpringBoot 1.5.1    2017年1月30
參考https://spring.io/blog/2017/01/30/spring-boot-1-5-1-released
SpringBoot 1.5.6    2017年7月27
參考https://spring.io/blog/2017/07/27/spring-boot-1-5-6-available-now
SpringBoot 1.5.8    2017年10月17
參考https://spring.io/blog/2017/10/17/spring-boot-1-5-8-available-now
SpringBoot 2.0.0   2018年3月1
參考https://spring.io/blog/2018/03/01/spring-boot-2-0-goes-ga
SpringBoot 2.2.0   2019年10月16
參考https://spring.io/blog/2019/10/16/spring-boot-2-2-0
SpringBoot 2.2.1   2019年11月7
參考https://spring.io/blog/2019/11/07/spring-boot-2-2-1-available-now

 

1)spring 1.x
  在spring1.x時代,都是通過xml文件配置bean,隨着項目的不斷擴大,需要將xml配置分放到不同的配置文件中,需要頻繁的在
java類和xmlwenjianz文件中切換

2)spring 2.x
  隨着jdk1.5帶來的注解支持,spring2.x可以使用注解對bean進行申明和注入,大大的減少了xml配置,簡化了項目的開發
最佳的配置方法: 1.應用的節本配置用xml,如數據源、資源文件等。
         2.業務開發用注解,如service中注入bean等

3)spring 3.x
  在spring3.x版本的時候,Spring3.x開始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,主要區別spring2.x的地方如下
  1. 核心API更新到JAVA5.0,即采用了泛型
  2. Spring表達式語言SpEl(Express Language)
  3.可通過Java類提供IOC配置信息
  XML配置方式,基於注解的配置方式,Spring3.0提供了基於Java類的配置方式。而最新基於Java類的配置方式非常靈活。
  4. 通用類型轉換系統和屬性格式化系統
  5.數據訪問層新增oxm(Object to xml,對象xml映射):通過元數據對象和xml轉化的映射
  6.web層的增強:2.5版本中的注解如:@Controller,@Request Mapping等。新增了@CookieValue,@RequestHeaders

4)spring4.x
  從spring4.x和springboot都推薦使用Java配置方式

 

//

Spring歷史版本變遷和如今的生態帝國 - 雲+社區 - 騰訊雲 --不錯
https://cloud.tencent.com/developer/article/1025723

 

//  Spring核心功能指南-1-Spring功能介紹-肖海鵬的在線視頻教程 --這個視頻的12分開始有段描述很不錯,
https://edu.csdn.net/course/play/3057/50874?spm=1002.2001.3001.4143

J2EE sun定義的 必須用JEB
jsp  sevlet JDBC 模式適合企業開發嗎, 簡單的j2ee的開發

Spring是完美的框架嗎
老師是 9幾年畢業的,那時候 C++框架,C++平台大行其道
97年出來的java 2000年后市場越來越大。

95~2000年 C++比較強勢的情況下,后來回看C++出了很多問題,  微軟把VS c++ 轉向 dot net ,現在高校學.net也很少了。
spring向j2ee發起了挑戰,那么spring也不是完美的

J2EE是什么,主要包括哪些技術 - lanfeng521 - 博客園 ---初略看一下就好
https://www.cnblogs.com/zhshero/p/10390167.html

j2EE通俗bai的理解為開發網站的就du是,j2SE就是開zhi發桌面應用程序dao的。
包含zhuan的技術嘛,主要的就是shu開發網站需要的一些技術啦
比如:servlet,jsp,javaBean 框架:spring hibernate struts ibatis webwork

 

 //==============應該是2008年前的事情了。 大致看一下就好。

轉發: Spring可能會越來越主流?_曲奇-CSDN博客
https://blog.csdn.net/yangxt/article/details/5397135?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-5397135.nonecase&utm_term=spring%20%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E5%BC%80%E5%A7%8B%E6%B5%81%E8%A1%8C%E7%9A%84&spm=1000.2123.3001.4430

Spring 自從2003年發布以來,一直是Java開源框架的奇跡之一。從2000年開始,伴隨着B/S架構逐漸引入企業應用軟件開發的領域,Java就逐漸成為企業應用開發的主流技術,一直到2003年,Struts+EJB一直是Java技術架構的不二選擇,然而這一切隨着2003年Spring以 without EJB的面目出現之后,一切都開始改變。

大概從2003年下半年開始,Spring+Hibernate就開始甚囂塵上,似乎那時候的Spring和Hibernate尚且不足以動搖J2EE規范以EJB為核心的領袖地位。但是2004年5月份,吸收了 Spring/Hibernate框架優點的EJB3 JCP委員會的成立,事實上宣判了Spring對EJB2的終結,EJB3則更像是Vendor們的一種自救行為。

2004年到2006 這三年時間以來,Spring取得了相當輝煌的成就,不但將EJB2趕進歷史,而且牢牢確立了Spring作為Java企業應用開發的主流地位。而今,甚至對技術比較保守的金融電信行業,也開始言必稱Spring,Spring已經成為Java框架的事實標准。

在2004年5月份之后,Hibernate Team開始和Spring公然決裂,這個事情放在兩年多以后的今天來看,原因是昭然若揭的,背靠JBoss的Hibernate Team已經成為EJB3規范的一部分,而JBoss希望力推的以EJB3為核心的Java架構來成為未來的企業應用主流標准,這種情況演變至今,變成了 Springframework和JBoss Seam的兩種不同技術架構的競爭關系。

2004年5月份,EJB3規范的起步,對Spring未來其實有很大的威脅,但是EJB3規范歷經兩年時間的難產,終於在2006年5月正式發布之時,已經為時過晚了,抬眼望去,已盡是spring的天下。

有意思的是,大致展望一下未來,Java的企業應用開發還能遵循Sun和JCP制訂的Java EE規范的道路走下去嗎?如果不是這樣,那么未來道路是什么呢?

觀察一下Java社區幾股大的勢力,會發現一些有意思的現象:

IBM 和BEA是Java社區的領導者,從2004年開始,IBM和BEA開始大肆宣傳SOA,將他們的目光從應用服務器領域挪到了松藕合企業服務領域,開展 SOA商業戰略。與此同時,EJB3專家委員會的領導者也悄然變成了JBoss和Oracle,是IBM和BEA無力爭取嗎?當然不是。IBM和BEA已經看到了應用服務器市場和底層框架平台即將被開源占領,商業價值萎縮,因而審時度勢進行戰略轉型。一方面押寶SOA戰略,大肆炒熱和培育SOA市場,另一方面也積極占領開源市場,IBM放出來WebSphere社區版本-Apache Geronimo,BEA干脆和Spring的咨詢公司interface21合作,提供spring框架在WebLogic上的商業技術支持,如今 EJB3對於他們來說已經形同雞肋,就拋給別人嚼吧。

將EJB3當塊寶的自然是應用服務器市場的跟隨者JBoss和Oracle,一方面憑借ORM的先天優勢,另一方面有出頭機會也不能放過,EJB3委員會幾乎成了JBoss和Oracle的天下。特別是JBoss,更加積極推出 JBoss Seam框架,希望確立以JSF+EJB3的架構樹立Java開發的標准,用以取代Struts/Spring/Hibernate的流行組合,因而開啟了EJB3和Spring 正面交鋒的戰爭。

Java Vendor中另外一股勢力Sun公司這兩年則一直自顧不暇,在應用服務器領域幾乎退出市場,直到最近才搞出來一個Glassfish,在開發框架領域也一直毫無建樹,推出的JSF至今還很不成熟,難擔大任,也許Sun都去忙着開源Solaris和JVM源代碼了。

幾個大的Vendor或戰略轉型,或自顧不暇,或忙於收購(Oracle),Java開發領域的主戰場被打掃一空,對決的雙方換成了Spring和JBoss。對決的武器則是spring vs Seam。

Spring 代表了不遵循通用標准,自己制訂游戲規則,不依賴容器的一方;JBoss代表了遵循通用標准,但是鎖定容器的一方。這場對決從2004年5月就開始上演,未來很長時間也會繼續下去。不過Spring已經站在優勢很大的地位上了。我個人覺得Spring會勝出這場對決,而Java企業應用開發的主流技術將倒向Spring這一邊,而Vendor們官方制訂的標准將被開發人員可憐的遺棄到一邊。開源技術開始決定Java企業開發的未來走向。

大致對比一下兩者:Spring vs EJB3,就會發現Spring從功能上面已經勝出很多了:

1、IoC容器spring勝出

Spring的IoC容器很強大,其bean管理功能超過了目前EJB3容器,配置方面Spring稍微復雜一些。不過對於全局性配置來說,XML要優於EJB3的annotation。

2、AOP能力Spring勝出

EJB3目前提供的AOP功能非常簡單,本來已經無法和Spring相比,至於集成AspectJ的Spring2.0,就更加望塵莫及了。

3、事務管理方面EJB3稍微領先

Spring提供了很棒的本地事務模型,也可以集成JTA,但是不支持分布式事務,當然這種場景也非常罕見。

4、Web框架spring勝出

EJB3 標准集成JSF,但是JSF並不成熟,和AJAX配合度也不好。Spring可以靈活集成各種Web框架和模板語言,自身也提供了相當強大的MVC框架,要是這還覺得不夠,那么spring webflow,portlet support都拿出來,那么EJB3就必敗了。

5、遠程訪問支持,大致持平

EJB3繼承了傳統的EJB遠程訪問能力,Web Services支持也不錯;不過Spring提供了更多更靈活的選擇,Java RPC,HTTP Invoker,Hessian/Burlap,WebServices。

6、框架集成能力,spring勝出

這是spring的傳統優勢項目,只要看看spring modules項目,看看n多第三方spring支持,就會發現spring現在的群眾基礎多么好,集成工作流,spring modules已經提供了方便的模板類,集成規則引擎,Cache,CMS,腳本語言,異步任務,安全驗證框架。。。。。。EJB3有點望塵莫及的味道

7、JMS,JMX,JCA等,EJB3領先一步

這些傳統EJB優勢項目往往應用的不太多,EJB3仍然是領先的。不過令人側目的是,Spring最近幾個版本在連續追趕EJB這些傳統優勢領域,到 Spring2.0為止,其JMS,JMX,JCA支持已經相當不錯了,可以說傳統EJB能夠做的,現在Spring也可以做得到,為Spring一統江湖掃清了最后的障礙。

這幾年除了Spring框架自身不斷完善和延伸到傳統應用領域,圍繞在Spring周圍的第三方框架也是越來越豐富,EJB3在annotation方面有些獨到的優勢,在一些傳統領域,還領先spring,但是總體來說,EJB3為核心的J2EE5.0規范很難和 Spring現在的2.0相匹敵,更何況Java的主力Vendor早已醉翁之意不在這里了,單憑JBoss的Seam,難以戰勝spring。

覺得Spring可能會越來越主流,甚至開始引領Java企業開發的未來發展道路,J2EE就靠邊站吧,也許Java社區也到了開源社區說了算的時代了。

//==========end

 

//--非常不錯,

Spring的誕生史 - 環信 
https://www.easemob.com/news/1213

 

// 轉 

Spring核心是什么

Spring出現的原因?
Spring出現的原因 解除耦合
軟件開發的開閉原則:通過多態實現,要么子類重寫父類,要么增加方法
提高抽象層次;
提高抽象層次的方法
把子類對象賦給父類對象進行使用的動態多態
注入Injection:某一個類想要什屬性,通過set方法給他 就叫注入
依賴注入 Depenency Injection =DI 有set就能活 沒有就錯誤
配置文件(反射)

Spring如何解除耦合
解耦合:首先解除邏輯耦合
mvc模式第一次解除了邏輯耦合

spring的IOC是進行深度解耦
日志:用來保持程序的健壯性,就是程序的運行記錄

代理需要在jdk1.5以上版本使用
jdk代理是基於反射的沒有反射就沒有辦法通用
調用代理類的的任何方法,都會執行到invoke方法
代理是模式
代理機制其實真正的代理的是方法
代理:proxy
代理的本質就是原產品不動,不做任何改變
要增值
要包裝
代理分類:
一.靜態代理:門面模式或裝飾模式
缺點:需要為每一個被代理的方法都寫一個代理方法,修改的時候特別值復雜,不靈活
二.動態代理
1.jdk動態代理:缺點:要想代理對象,被代理對象必須有接口,否側不能代理
2.CGLIB代理:優點:在被代理類沒有接口的情況下也能夠被代理,實際就是為當前類生成一個子類
代理類和被代理類都需要實現同一個接口,代理類中包含一個被代理類的對象,可以提供兩種方式把被代理對象賦給代理對象
調用被代理類,實現真正的邏輯,在自己的里面實現額外邏輯.

代理最終的要求就是簡單通用靈活

Spring核心(重點來了!!!!)
Spring是一個無侵入式的輕量級開源框架
Spring兩大特性 :
1.IOC:控制反轉
IOC作用:解除類與類之間的關系耦合
解除耦合的方式用了四個技術點:

配置

容器

反射

注入(DI):利用set方法或者構造器給屬性賦值

2.AOP:面相切面編程
作用:為了解除業務邏輯耦合,例如耦合或者數據業務邏輯日志業務
AOP實現原理是基於代理的
Spring進行內部實現的時候 ,會檢測是否存在接口,存在時選擇jdk動態代理,不存在選擇CGLIB代理

Spring類似一個管家,后期幾乎所有內容都交給Spring管理,View層Spring不管理,與java相關的全部管理.(Spring容器)

Spring的核心思想是解除程序中的耦合(解除了業務邏輯耦合,解除了類與類之間的關系耦合)
輕量級與重量級的區分:
1.性能開銷
2.框架本身的大小問題
3.使用的難易程度

Spring中所有的行為都是基於Spring能夠管理所有的類

Spring也有持久層框架,但是因為性能不強,所以沒有人用,用來給hibernate和mybitas支持
Spring對web框架也是有支持的
Spring還是一個mvc結構的框架
Core解除的是類級別的耦合
AOP解除的是方法級別的耦合

IOC控制反轉 Inversion Of Control
高層模塊不應該依賴底層模塊(如Action依賴Dao層)
實現必須依賴抽象,而不是是抽象依賴實現
依賴注入:Dependency Injection
DI是IOC的核心實現原理
通俗的說就是利用set方法或者構造器給屬性賦值

搭建Spring環境:
1.加入jar包
2.寫配置文件:applicationContext.xml 必須放在Src下 可以更改名字一般叫Spring.xml
一個Spring可以對應多個XMl文件,配置文件的划分是根據業務邏輯划分的

跟標簽里寫東西是Schema

Spring的核心是一個context容器
想要什么對象就在spring中配置這個對象
Spring會自動創建對象並且進行初始化

注入類型分為三類:
Type1 侵入式(依賴Spring)
Type2 (set/get) 和type3(構造器注入)是非侵入式

Spring中的接口是為了提高抽象層次,是變量接收的一個中介,所以Srping不需要管理接口
所謂的組件就是可以直接實例化,可以直接用的
構造器注入 里面的屬性 ref=references引用 index要賦值屬性的下標,從0開始
構造器注入唯一的優點就是時效性好,創建對象時直接賦值.
構造器注入作為了解 不需要掌握
構造器和set/get方法同時存在時取決於set/get方法

 


免責聲明!

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



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