2016-08-01 56 views

回答

2

這不是一個小問題。

JavaEE認爲您已經獲得了以標準方式提供服務的容器。您可以在應用程序服務器中運行應用程序,該應用程序服務器實現特定版本規範中描述的部分或全部API。你依賴於容器,並使用它,因爲它應該工作:Servlets,JSP,事務管理,JPA,CDI,身份驗證和授權...

春天是一個不同的野獸主要是在EJB 2早期200x。它首先表明你不需要一個完整的容器(意味着你可以做不同的數據層),並且可以從依賴注入(DI)中受益。一開始,Spring就是通過XML文件完成DI的。這些是你提到的配置文件。然後是Spring的不同子項目:Spring Integration,Spring Web Services,Spring Data,Spring Boot ...以及JavaEE的功能性競爭。 EJB 2因爲受到Hibernate啓發的EJB 3而被拋棄。註釋開始受到配置文件的青睞,等等。這是一個非常有機的過程,好的想法力求變得更好。仍然是這樣或者那樣的配置:在XML文件中,在組件類中分散的註釋中,在專用於配置的類中......這可以被看作是Spring的缺點,但這種複雜性使您能夠與巨大的數量的庫和中間件,並以你看到它的方式塑造應用程序。多年來,JavaEE和Spring已經成爲競爭對手,最近JavaEE採用了Spring的一些偉大想法,例如CDI,但是它們每個人對底層容器的作用使得它們完全不同。

+0

謝謝您的詳細解答。但從你的回答來看,目前還不清楚爲什麼在Spring中有必要定義一些bean。在標準的JavaEE應用程序中,我可以注入每個我想要的類。在Spring中,可能有必要在Bean之前定義Bean。或者說「容器」是答案,唯一的原因是?我認爲Spring應用程序上下文也是一種容器。 – smsnheck

+0

我會盡力澄清是否可以,但正如我所說這不是一個小問題。 JavaEE是關於容器的。有servlet和EJB容器,現在我們將討論配置文件,web配置文件大致是servlet容器的發展。但容器對於如何爲所謂的企業應用程序做事情有意見。 Spring中的容器是一個DI容器。除了基於某種形式的聲明的線對象之外,它不提供其他功能:XML,然後註釋和組件掃描,然後是Java配置。它仍然是你的決定使用什麼技術來連接的技術。 –

+0

謝謝。現在我明白了這些原則。 – smsnheck

相關問題