spring工作原理
spring工作原理
Spring的工作原理是讓一個(gè)對(duì)象的創(chuàng)建不用new就可以自動(dòng)的生產(chǎn),在運(yùn)行時(shí)與xml Spring的配置文件來動(dòng)態(tài)的創(chuàng)建對(duì)象和調(diào)用對(duì)象,而不需要通過代碼來關(guān)聯(lián)。Spring是一個(gè)開放源代碼的設(shè)計(jì)層面框架,他解決的是業(yè)務(wù)邏輯層和其他各層的松耦合問題,因此它將面向接口的編程思想貫穿整個(gè)系統(tǒng)應(yīng)用。
spring特點(diǎn)是1.方便解耦,簡(jiǎn)化開發(fā)。
2.AOP編程的支持。3.聲明式事務(wù)的支持。4.方便程序的測(cè)試。5.方便集成各種**框架。
6.降低Java EE API的使用難度。7.Java 源碼是經(jīng)典學(xué)習(xí)范例。Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。
Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。
你可以認(rèn)為IoC與JNDI相反——不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。
spring的原理是什么
Spring是一個(gè)開源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。
Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。
然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。 ?6?1 目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性 ?6?1 功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能 ?6?1 范圍:任何Java應(yīng)用 簡(jiǎn)單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。 輕量——從大小與開銷兩方面而言Spring都是輕量的。
完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類。
控制反轉(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反——不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。
面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)()管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。
容器——Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建——基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生成一個(gè)新的實(shí)例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。 框架——Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。
Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。
Spring依賴注入有什么好處
Spring DI的好處:在容器初始化的時(shí)候,會(huì)創(chuàng)建各個(gè)Object,利用DI特性,就可以自動(dòng)的給創(chuàng)建的Object添加屬性值。你可以看到Sping DI 貫穿了Spring框架的各個(gè)地方。
如果不使用接口,就如你說的,代碼不需要修改就實(shí)現(xiàn)不了,這是不使用Interface的壞處。
此外Spring AOP就用到了Interface,如果不使用Interface,那么Spring還可以通過CGLIB來實(shí)現(xiàn)AOP,這是Spring 在沒有使用Interface情況下的優(yōu)勢(shì)。
Java核心技術(shù):Spring是什么?
從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。簡(jiǎn)單來說,Spring就是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
下面從整體上認(rèn)識(shí)一下Spring的主要特征:*輕量:從大小與開銷兩方面而言Spring都是輕量的。
此外,Spring是非侵入式的:使用Spring,我們的類還是pojo類,完全不用繼承和實(shí)現(xiàn)Spring的類和接口等。也就是說,使用Spring的應(yīng)用中的對(duì)象不依賴于Spring的特定類。*IoC:Spring通過控制反轉(zhuǎn)技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。
可以認(rèn)為IoC與JNDI相反–不是我們自己控制對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它,這就是DI–依賴注入?;旧暇褪菍?duì)象不用自己動(dòng)手管理和創(chuàng)建。完全由容器管理,我們只管用就行。
*AOP:Spring提供了面向切面的編程支持,AOP將與程序業(yè)務(wù)無關(guān)的內(nèi)容分離提取,應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的–完成業(yè)務(wù)邏輯–僅此而已。它們并不負(fù)責(zé)其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。AOP將與業(yè)務(wù)無關(guān)的邏輯橫切進(jìn)真正的邏輯中。
*框架:Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),而用戶就有更多的時(shí)間和精力去開發(fā)應(yīng)用邏輯。
所有Spring的這些特征都能幫助我們夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。*借助Spring,榮國(guó)依賴注入百科,AOP應(yīng)用,面向接口編程,來降低業(yè)務(wù)組件之間的耦合度,增強(qiáng)系統(tǒng)的擴(kuò)展性。* 讓已有的技術(shù)和框架更加易用。
*利用其對(duì)hibernate的SessionFactory、事務(wù)管理的封裝,更簡(jiǎn)潔的應(yīng)用hibernate.*Spring并不完全依賴于Spring,開發(fā)者可自由選用Spring框架的部分或全部*利用AOP思想,集中處理業(yè)務(wù)邏輯,減少重復(fù)代碼,構(gòu)建優(yōu)雅的解決方案。*低侵入式設(shè)計(jì),代碼污染極低。Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案??梢哉fSpring是企業(yè)應(yīng)用開發(fā)的\”一站式\”選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。
雖然Spring可以一站式解決整個(gè)項(xiàng)目問題,但是Spring并不想取代那些已有的框架,而是與它們無縫地整合。Spring可以降低各種框架的使用難度,他提供了對(duì)各種**框架(如Struts、Hibernate、Hessian、Quartz等)的直接支持。使用Spring的主要目的是使J2EE易用和促進(jìn)好的編程習(xí)慣,Spring的目標(biāo)就是讓已有的技術(shù)更加易用。所以Spring的一個(gè)重要思想就是整合和兼容。