第一篇:三大框架的優(yōu)缺點
Struts工作原理
MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC 減弱了業(yè)務邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化。MVC的工作原理,如下圖1所示:
Struts 是MVC的一種實現(xiàn),它將 Servlet和 JSP 標記(屬于 J2EE 規(guī)范)用作實現(xiàn)的一部分。Struts繼承了MVC的各項特性,并根據(jù)J2EE的特點,做了相應的變化與擴展。Struts的工作原理,視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP 標簽庫: Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。
控制:在Struts中,承擔MVC中Controller角色的是一個Servlet,叫ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點。它截取和分發(fā)這些請求到相應的動作類(這些動作類都是 Action類的子類)。另外控制組件也負責用相應的請求參數(shù)填充 Action From(通常稱之為FromBean),并傳給動作類(通常稱之為ActionBean)。動作類實現(xiàn)核心商業(yè)邏輯,它可以訪問java bean 或調(diào)用EJB。最后動作類把控制權(quán)傳給后續(xù)的JSP 文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。
模型:模型以一個或多個java bean的形式存在。這些bean分為三類:Action Form、Action、JavaBean or EJB。Action Form通常稱之為FormBean,封裝了來自于Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從 ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用Java Bean或EJB等。
流程:在Struts中,用戶的請求一般以*.do作為請求服務名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據(jù) Struts-config.xml中的配置信息,將用戶請求封裝成一個指定名稱的FormBean,并將此FormBean傳至指定名稱的 ActionBean,由ActionBean完成相應的業(yè)務操作,如文件操作,數(shù)據(jù)庫操作等。每一個*.do均有對應的FormBean名稱和 ActionBean名稱,這些在Struts-config.xml中配置。
核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。Struts優(yōu)缺點
優(yōu)點:
1.開源軟件,能更深入的了解其內(nèi)部實現(xiàn)機制。
2.Taglib標記庫,靈活動用,能大大提高開發(fā)效率。
3.頁面導航使系統(tǒng)的脈絡更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯。
4.提供Exception處理機制.5.數(shù)據(jù)庫鏈接池管理
6.Struts 的Action必需是thread-safe方式,它僅僅允許一個實例去處理所有的請求。所以action用到的所有的資源都必需統(tǒng)一同步,這個就引起了線程安全的問題。缺點:
Taglib是Struts的一大優(yōu)勢,但對于初學者而言,卻需要一個持續(xù)學習的過程,甚至還會打亂你網(wǎng)頁編寫的習慣,但是,當你習慣了它時,你會覺得它真的很棒。
Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復雜度。
ActionForms使用不便、無法進行單元測試(StrutsTestCase只能用于集成)
Spring的原理和優(yōu)點
Spring真正的精華是它的Ioc模式實現(xiàn)的BeanFactory和AOP,它自己在這個基礎(chǔ)上延伸的功能有些畫蛇添足。
Ioc模式是什么
可伸縮性和重/輕量,誰是實用系統(tǒng)的架構(gòu)主選?
Spring
它是一個開源的項目,而且目前非?;钴S;它基于IoC(Inversion of Control,反向控制)和AOP的構(gòu)架多層j2ee系統(tǒng)的框架,但它不強迫你必須在每一層 中必須使用Spring,因為它模塊化的很好,允許你根據(jù)自己的需要選擇使用它的某一個模塊;它實現(xiàn)了很優(yōu)雅的MVC,對不同的數(shù)據(jù)訪問技術(shù)提供了統(tǒng)一的 接口,采用IoC使得可以很容易的實現(xiàn)bean的裝配,提供了簡潔的AOP并據(jù)此實現(xiàn)Transcation Managment,等等
優(yōu)點
a.Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的 API特制的framework,Spring致力于解決剩下的問題。
b.Spring能消除在許多工程中常見的對Singleton的過多使用。根據(jù)我的經(jīng)驗,這是一個很大的問題,它降低了系統(tǒng)的可測試性和面向?qū)ο蟮某潭取?/p>
c.通過一種在不同應用程序和項目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經(jīng)對某個類要尋找的是哪個魔法般的屬性項或系統(tǒng)屬性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。Inversion of Control的使用(在下面討論)幫助完成了這種簡化。
d.? 通過把對接口編程而不是對類編程的代價幾乎減少到?jīng)]有,Spring能夠促進養(yǎng)成好的編程習慣。
e.Spring被設計為讓使用它創(chuàng)建的應用盡可能少的依賴于他的APIs。在Spring應用中的大多數(shù)業(yè)務對象沒有依賴于Spring。
f.使用Spring構(gòu)建的應用程序易于單元測試。
g.Spring能使EJB的使用成為一個實現(xiàn)選擇,而不是應用架構(gòu)的必然選擇。你能選擇用POJOs或local EJBs來實現(xiàn)業(yè)務接口,卻不會影響調(diào)用代碼。
h.Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用于許多web應用。例如,Spring能使用AOP提供聲明性事務管理而不通過EJB容器,如果你僅僅需要與單個數(shù)據(jù)庫打交道,甚至不需要一個JTA實現(xiàn)。
i.Spring為數(shù)據(jù)存取提供了一個一致的框架,不論是使用的是JDBC還是O/R mapping產(chǎn)品(如Hibernate)。
Spring確實使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大價值的。缺點:使用人數(shù)不多、jsp中要寫很多代碼、控制器過于靈活,缺少一個公用控制器 Hibernate的原理和優(yōu)點。
Hibernate使用了J2EE架構(gòu)中的如下技術(shù):JDBC、JTA、JNDI。其中JDBC是一個支持關(guān)系數(shù)據(jù)庫操作的一個基礎(chǔ)層;它與JNDI和 JTA一起結(jié)合,使得Hibernate可以方便地集成到J2EE應用服務器中去。在這里,我們不會詳細地去討論Hibernate API接口中的所有方法,我們只簡要講一下每個主要接口的功能,如果你想了解得更多的話,你可以在Hibernate的源碼包中的 net.sf.hibernate子包中去查看這些接口的源代碼。下面我們依次講一下所有的主要接口:核心接口以下5個核心接口幾乎在任何實際開發(fā)中都會用到。通過這些接口,你不僅可以存儲和獲得持久對象,并且能夠進行事務控制。
Session 接口Session接口對于Hibernate 開發(fā)人員來說是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,創(chuàng)建和銷毀它都不會占用很多資源。這在實際項目中確實很重要,因為在客戶程序中,可能會不斷地創(chuàng)建以及銷毀Session對象,如果Session的開銷太大,會給系統(tǒng)帶來不良影響。
SessionFactory 接口這里用到了一個設計模式――工廠模式,用戶程序從工廠類SessionFactory中取得Session的實例。令你感到奇怪的是SessionFactory并不是輕量級的!實際上它的設計者的意圖是讓它能在整個應用中共享。典型地來說,一個項目通常只需要一個SessionFactory就夠了,但是當你的項目要操作多個數(shù)據(jù)庫時,那你必須為每個數(shù)據(jù)庫指定一個SessionFactory。SessionFactory在Hibernate中實際起到了一個緩沖區(qū)的作用,它緩沖了Hibernate自動生成的SQL語句和一些其它的映射數(shù)據(jù),還緩沖了一些將來有可能重復利用的數(shù)據(jù)。
Configuration 接口Configuration接口的作用是對Hibernate進行配置,以及對它進行啟動。在Hibernate的啟動過程中,Configuration類的實例首先定位映射文檔的位置,讀取這些配置,然后創(chuàng)建一個SessionFactory對象。
Query 和Criteria接口Query接口讓你方便地對數(shù)據(jù)庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地數(shù)據(jù)庫的SQL語句。Query經(jīng)常被用來綁定查詢參數(shù)、限制查詢記錄數(shù)量,并最終執(zhí)行查詢操作。Criteria接口與Query接口非常類似,它允許你創(chuàng)建并執(zhí)行面向?qū)ο蟮臉藴驶樵?。值得注意的是Query接口也是輕量級的,它不能在Session之外使用。
Callback 接口 當一些有用的事件發(fā)生時――例如持久對象的載入、存儲、刪除時,Callback接口會通知Hibernate去接收一個通知消息。一般而言,Callback接口在用戶程序中并不是必須的,但你要在你的項目中創(chuàng)建審計日志時,你可能會用到它。以下是它的策略接口: · 主鍵的生成(IdentifierGenerator 接口)
· 本地SQL語言支持(Dialect 抽象類)
· 緩沖機制(Cache 和CacheProvider 接口)
· JDBC 連接管理(ConnectionProvider接口)
.事務管理(TransactionFactory, Transaction, 和 TransactionManagerLookup 接口)· ORM 策略(ClassPersister 接口)
· 屬性訪問策略(PropertyAccessor 接口)
· 代理對象的創(chuàng)建(ProxyFactory接口)
Hibernate為以上所列的機制分別創(chuàng)建了一個缺省的實現(xiàn),因此如果你只是要增強它的某個策略的功能的話,只需簡單地繼承這個類就可以了,沒有必要從頭開始寫代碼。Hibernate運行在兩種環(huán)境下:可管理環(huán)境和不可管理環(huán)境
· 可管理環(huán)境――這種環(huán)境可管理如下資源:池資源管理,諸如數(shù)據(jù)庫連接池和,還有事務管理、安全定義。一些典型的J2EE服務器(JBoss、Weblogic、WebSphere)已經(jīng)實現(xiàn)了這些?!?不可管理環(huán)境――只是提供了一些基本的功能,諸如像Jetty或Tomcat這樣的servlet容器環(huán)境。
優(yōu)點:
Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。Hibernate可以用在任何JDBC可以使用的場合,例如Java應用程序的數(shù)據(jù)庫訪問代碼,DAO接口的實現(xiàn)類,甚至可以是BMP里面的訪問數(shù)據(jù)庫的代碼。
Hibernate是一個和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動,和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java程序,和App Server沒有任何關(guān)系,也不存在兼容性問題。
Hibernate不能用來直接和Entity Bean做對比,只有放在整個J2EE項目的框架中才能比較。并且即使是放在軟件整體框架中來看,Hibernate也是做為JDBC的替代者出現(xiàn)的,而不是Entity Bean的替代者出現(xiàn)的,Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。
Hibernate可以應用在任何使用JDBC的場合。
Hibernate 使用 Java 反射機制 而不是字節(jié)碼增強程序來實現(xiàn)透明性。
Hibernate 的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。
它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復雜關(guān)系。
缺點:它限制您所使用的對象模型。(例如,一個持久性類不能映射到多個表)。讓我再列一次我已經(jīng)列n次的框架結(jié)構(gòu):
傳統(tǒng)的架構(gòu):
1)Session Bean <-> Entity Bean <-> DB
為了解決性能障礙的替代架構(gòu):
2)Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate來提高上面架構(gòu)的開發(fā)效率的架構(gòu):
3)Session Bean <-> DAO <-> Hibernate <-> DB
就上面3個架構(gòu)來分析:
1、內(nèi)存消耗:采用JDBC的架構(gòu)2無疑是最省內(nèi)存的,Hibernate的架構(gòu)次之,EB的架構(gòu)1最差。
2、運行效率:如果JDBC的代碼寫的非常優(yōu)化,那么JDBC架構(gòu)運行效率最高,但是實際項目中,這一點幾乎做不到,這需要程序員非常精通JDBC,運用 Batch語句,調(diào)整PreapredStatement的Batch Size和Fetch Size等參數(shù),以及在必要的情況下采用結(jié)果集cache等等。而一般情況下程序員是做不到這一點的。因此Hibernate架構(gòu)表現(xiàn)出最快的運行效率。EB的架構(gòu)效率會差的很遠。
3、開發(fā)效率:在有JBuilder的支持下以及簡單的項目,EB架構(gòu)開發(fā)效率最高,JDBC次之,Hibernate最差。但是在大的項目,特別是持久層關(guān)系映射很復雜的情況下,Hibernate效率高的驚人,JDBC次之,而EB架構(gòu)很可能會失敗。
第二篇:三大框架總結(jié)
JAVA三大框架ssh-Struts、Spring、Hibernate
Struts
1.struts是一個按MVC模式設計的Web層框架,其實它就是一個大大的servlet,這個Servlet名為ActionServlet,或是 ActionServlet的子類。我們可以在web.xml文件中將符合某種特征的所有請求交給這個Servlet處理,這個Servlet再參照一個配置文件(通常為/WEB-INF/struts-config.xml)將各個請求分別分配給不同的action去處理。
一個擴展知識點:struts的配置文件可以有多個,可以按模塊配置各自的配置文件,這樣可以防止配置文件的過度膨脹;
2.ActionServlet把請求交給action去處理之前,會將請求參數(shù)封裝成一個formbean對象(就是一個java類,這個類中的每個屬性對應一個請求參數(shù)),封裝成一個什么樣的formbean對象呢?看配置文件。
3.要說明的是,ActionServlet把formbean對象傳遞給action的execute方法之前,可能會調(diào)用formbean的validate方法進行校驗,只有校驗通過后才將這個formbean對象傳遞給action的execute方法,否則,它將返回一個錯誤頁面,這個錯誤頁面由input屬性指定,(看配置文件)作者為什么將這里命名為 input屬性,而不是error屬性,我們后面結(jié)合實際的運行效果進行分析。
4.action執(zhí)行完后要返回顯示的結(jié)果視圖,這個結(jié)果視圖是用一個ActionForward對象來表示的,actionforward對象通過struts-config.xml配置文件中的配置關(guān)聯(lián)到某個jsp 頁面,因為程序中使用的是在struts-config.xml配置文件為jsp頁面設置的邏輯名,這樣可以實現(xiàn)action程序代碼與返回的jsp頁面名稱的解耦。
Hibernate
1.面向?qū)ο笤O計的軟件內(nèi)部運行過程可以理解成就是在不斷創(chuàng)建各種新對象、建立對象之間的關(guān)系,調(diào)用對象的方法來改變各個對象的狀態(tài)和對象消亡的過程,不管程序運行的過程和操作怎么樣,本質(zhì)上都是要得到一個結(jié)果,程序上一個時刻和下一個時刻的運行結(jié)果的差異就表現(xiàn)在內(nèi)存中的對象狀態(tài)發(fā)生了變化。
2.為了在關(guān)機和內(nèi)存空間不夠的狀況下,保持程序的運行狀態(tài),需要將內(nèi)存中的對象狀態(tài)保存到持久化設備和從持久化設備中恢復出對象的狀態(tài),通常都是保存到關(guān)系數(shù)據(jù)庫來保存大量對象信息。從Java程序的運行功能上來講,保存對象狀態(tài)的功能相比系統(tǒng)運行的其他功能來說,應該是一個很不起眼的附屬功能,java采用 jdbc來實現(xiàn)這個功能,這個不起眼的功能卻要編寫大量的代碼,而做的事情僅僅是保存對象和恢復對象,并且那些大量的jdbc代碼并沒有什么技術(shù)含量,基本上是采用一套例行公事的標準代碼模板來編寫,是一種苦活和重復性的工作。
3.通過數(shù)據(jù)庫保存java程序運行時產(chǎn)生的對象和恢復對象,其實就是實現(xiàn)了java對象與關(guān)系數(shù)據(jù)庫記錄的映射關(guān)系,稱為ORM(即Object Relation Mapping),人們可以通過封裝JDBC代碼來實現(xiàn)了這種功能,封裝出來的產(chǎn)品稱之為ORM框架,Hibernate就是其中的一種流行ORM框架。使用Hibernate框架,不用寫JDBC代碼,僅僅是調(diào)用一個save方法,就可以將對象保存到關(guān)系數(shù)據(jù)庫中,僅僅是調(diào)用一個get方法,就可以從數(shù)據(jù)庫中加載出一個對象。
4.使用Hibernate的基本流程是:配置Configuration對象、產(chǎn)生SessionFactory、創(chuàng)建session對象,啟動事務,完成CRUD操作,提交事務,關(guān)閉session。
5.使用Hibernate時,先要配置hibernate.cfg.xml文件,其中配置數(shù)據(jù)庫連接信息和方言等,還要為每個實體配置相應的hbm.xml文件,hibernate.cfg.xml文件中需要登記每個hbm.xml文件。
6.在應用Hibernate時,重點要了解Session的緩存原理,級聯(lián),延遲加載和hql查詢。
3、AOP的作用。
Spring
1.Spring實現(xiàn)了工廠模式的工廠類(在這里有必要解釋清楚什么是工廠模式),這個類名為BeanFactory(實際上是一個接口),在程序中通常BeanFactory的子類ApplicationContext。Spring相當于一個大的工廠類,在其配置文件中通過
2.Spring提供了對IOC良好支持,IOC是一種編程思想,是一種架構(gòu)藝術(shù),利用這種思想可以很好地實現(xiàn)模塊之間的解耦。IOC也稱為DI(Depency Injection),什么叫依賴注入呢?譬如,Class Programmer
{
Computer computer = null;
public void code()
{
//Computer computer = new IBMComputer();
//Computer computer = beanfacotry.getComputer();
computer.write();
}
public void setComputer(Computer computer)
{
this.computer = computer;
}
}
另外兩種方式都由依賴,第一個直接依賴于目標類,第二個把依賴轉(zhuǎn)移到工廠上,底與目標和工廠解耦了。在spring的配置文件中配置片段如下:
3.Spring提供了對AOP技術(shù)的良好封裝,AOP稱為面向切面編程,就是系統(tǒng)中有很多各不相干的類的方法,在這些眾多方法中要加入某種系統(tǒng)功能的代碼,例如,加入日志,權(quán)限判斷,加入異常處理,這種應用稱為AOP。實現(xiàn)AOP功能采用的是代理技術(shù),客戶端程序不再調(diào)用目標,而調(diào)用代理類,代理類與目標類對外具有相同的方法聲明,可以實現(xiàn)相同的方法聲明,一是實現(xiàn)相同的接口,二是作為目標的子類在,JDK
類產(chǎn)生動態(tài)代理的方式為某個接口生成實現(xiàn)類,如果要為某個類生成子類,則可以用
B。在生成的代理類的方法中加入系統(tǒng)功能和調(diào)用目標類的相應方法,系統(tǒng)功能的代理以Advice對象進行提供,顯然要創(chuàng)建出代理對象,至少需要目標類和 Advice類。
了這種支持,只需要在spring配置文件中配置這兩個元素即可實現(xiàn)代理和aop
第三個徹加入ProxyCGLI spring提供有兩種方式中采用功能,例如,
Struts優(yōu)缺點
優(yōu)點:
1.實現(xiàn)MVC模式,結(jié)構(gòu)清晰,使開發(fā)者只關(guān)注業(yè)務邏輯的實現(xiàn).2.有豐富的tag可以用 ,Struts的標記庫(Taglib),如能靈活動用,則能大大提高開發(fā)效率
3.頁面導航
使系統(tǒng)的脈絡更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯。
4.提供Exception處理機制.5.數(shù)據(jù)庫鏈接池管理
6.支持I18N
缺點
一、轉(zhuǎn)到展示層時,需要配置forward,如果有十個展示層的jsp,需要配置十次struts,而且還不包括有時候目錄、文件變更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整個項目,而tomcate這樣的服務器,還必須重新啟動服務器
二、Struts 的Action必需是thread-safe方式,它僅僅允許一個實例去處理所有的請求。所以action用到的所有的資源都必需統(tǒng)一同步,這個就引起了線程安全的問題。
三、測試不方便.Struts的每個Action都同Web層耦合在一起,這樣它的測試依賴于Web容器,單元測試也很難實現(xiàn)。不過有一個Junit的擴展工具Struts TestCase可以實現(xiàn)它的單元測試。
四、類型的轉(zhuǎn)換.Struts的FormBean把所有的數(shù)據(jù)都作為String類型,它可以使用工具Commons-Beanutils進行類型轉(zhuǎn)化。但它的轉(zhuǎn)化都是在Class級別,而且轉(zhuǎn)化的類型是不可配置的。類型轉(zhuǎn)化時的錯誤信息返回給用戶也是非常困難的。
五、對Servlet的依賴性過強.Struts處理Action時必需要依賴ServletRequest 和ServletResponse,所有它擺脫不了Servlet容器。
六、前端表達式語言方面.Struts集成了JSTL,所以它主要使用JSTL的表達式語言來獲取數(shù)據(jù)??墒荍STL的表達式語言在Collection和索引屬性方面處理顯得很弱。
七、對Action執(zhí)行的控制困難.Struts創(chuàng)建一個Action,如果想控制它的執(zhí)行順序?qū)浅@щy。甚至你要重新去寫Servlet來實現(xiàn)你的這個功能需求。
八、對Action 執(zhí)行前和后的處理.Struts處理Action的時候是基于class的hierarchies,很難在action處理前和后進行操作。
九、對事件支持不夠.在struts中,實際是一個表單Form對應一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能 對應一個事件,struts這種事件方式稱為application event,application event和component event相比是一種粗粒度的事件。
一、Spring
Spring是一個解決了許多在J2EE開發(fā)中常見的問題的強大框架。Spring提供了管理業(yè)務對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構(gòu)基礎(chǔ)是基于使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構(gòu)建完關(guān)注所有架構(gòu)層的完整解決方案方面是獨一無二的。Spring提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。Spring的數(shù)據(jù)訪問架構(gòu)還集成了Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術(shù),例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業(yè)事務--如果你需要--還能實現(xiàn)你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開 EJB的復雜性,同時享受著和傳統(tǒng)EJB相關(guān)的關(guān)鍵服務。Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。
二、STRUCTS
Struts 是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術(shù)來實現(xiàn)的。由于Struts能充分滿足應用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關(guān)注。Struts把Servlet、JSP、自定義標簽和信息資源
(message resources)整合到一個統(tǒng)一的框架中,開發(fā)人員利用其進行開發(fā)時不用再自己編碼實現(xiàn)全套MVC模式,極大的節(jié)省了時間,所以說Struts是一個非常不錯的應用框架。
三、Hibernate
Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱?,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。,Hibernate可以在應用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
第三篇:三大貨幣政策的優(yōu)缺點
在現(xiàn)實的業(yè)務活動中, 傳統(tǒng)三大貨幣政策的優(yōu)缺點
傳統(tǒng)三大貨幣政策包括再貼現(xiàn)業(yè)務、公開市場、存款準備金政策。再貼現(xiàn)業(yè)務的主要優(yōu)點是,它有利于中央銀行發(fā)揮最后貸款者的作用,并且既能調(diào)節(jié)貨幣供給的總量,又調(diào)節(jié)貨幣供給的結(jié)構(gòu)。再貼現(xiàn)業(yè)務的主要缺點是再貼現(xiàn)業(yè)務的主動權(quán)在商業(yè)銀行,而不在中央銀行,這就限制中央銀行的主動性;再貼現(xiàn)率的調(diào)節(jié)作用有限。繁榮時期提高再貼現(xiàn)率未必能夠抑制商業(yè)銀行的再貼現(xiàn)需求,因為商業(yè)銀行的盈利更高;蕭條時期降低再貼現(xiàn)率也未必能刺激商業(yè)銀行的借款需求,因為此時的盈利水平更低。而且再貼現(xiàn)率不能經(jīng)常調(diào)整,否則市場利率的經(jīng)常波動,會使商業(yè)銀行無所適從。
此外,再貼現(xiàn)業(yè)務的最大缺點在于它具有順經(jīng)濟走勢的傾向,繁榮時期的物價上漲使得再貼現(xiàn)票據(jù)的金額上升,貨幣供給增加;蕭條時期的物價下跌,又使得再貼現(xiàn)金額下降,貨幣供給減少。貨幣政策因此可能在繁榮時期“火上加油”,而在蕭條時期“雪上加霜”。
公開市場操作的優(yōu)點是:第一,中央銀行能及時運用公開市場操作,買賣任意規(guī)模的有價證券,從而精確地控制銀行體系的準備金和基礎(chǔ)貨幣,使之達到合理的水平。雖然其發(fā)生作用的途徑同再貼現(xiàn)率政策和準備金政策基本相同,但它的效果比這兩種政策更為準確,并且不受銀行體系反應程度的影響。在公開市場操作中,中央銀行始終處于積極主動的地位,完全可以按自己的意愿來實施貨幣政策。依弗里德曼之意,中央銀行實施公開市場操作是“主動出擊”,而非“被動等待”。第二,公開市場操作沒有“告示效應”,不會引起社會公眾對貨幣政策意向的誤解,因而,也不會造成經(jīng)濟的不必要紊亂。這就可以使中央銀行連續(xù)、靈活、不受時間數(shù)量方向限制地進行公開市場操作,而不會因為經(jīng)濟主體的適應性調(diào)整,造成經(jīng)濟運行的紊亂,即使中央銀行出現(xiàn)政策失誤也可以及時進行修正。這是具有強烈“告示效應”的再貼現(xiàn)率政策和準備金政策所做不到的。第三,中央銀行進行公開市場操作,不決定其它證券的收益率或利率,因而不會直接影響銀行的收益。另外,公開市場操作可以普遍運用,廣泛地影響社會經(jīng)濟活動。據(jù)此,弗里德曼堅持主張中央銀行可以用公開市場操作,完全取代法定準備金制度和進行再貼現(xiàn)業(yè)務。
公開市場業(yè)務必須具備以下三個條件,才能充分有效地發(fā)揮作用:第一,中央銀行必須具有強大的、足以干預和控制整個金融市場的金融實力;第二,要有一個發(fā)達、完善和全國性的金融市場,證券種類齊全且達到一定規(guī)模;第三,必須有其它政策工具的配合。如沒有存款準備金制度,就不能通過改變商業(yè)銀行的超額準備來影響貨幣供應量。公開市場業(yè)務最大的不足是缺乏這三個條件的國家不能有效地運用這個政策手段;此外,它的收效緩慢,因為國債買賣對貨幣供給及利率的影響需要一定時間才能緩慢地傳導到其它金融市場,影響經(jīng)濟運行。
存款準備金政策具有如下優(yōu)點:第一,中央銀行具有完全的自主權(quán),它是三大貨幣政策工具中最容易實施的手段;第二,存款準備率的變動對貨幣供應量的作用迅速,一旦確定,各商業(yè)銀行及其它金融機構(gòu)都必須立即執(zhí)行;第三,準備金制度對所有的商業(yè)銀行一視同仁,所有的金融機構(gòu)都同樣受到影響。存款準備金政策的不足之處在于:一是作用過于巨大,其調(diào)整對整個經(jīng)濟和社會心理預期的影響都太大,不宜作為中央銀行日常調(diào)控貨幣供給的工具,中央銀行因此有將準備率固定化的傾向;二是其政策效果在很大程度上受商業(yè)銀行超額存款準備的影響。在商業(yè)銀行有大量超額準備的情況下,中央銀行提高法定存款準備金率,商業(yè)銀行會將超額準備的一部分充作法定準備,而不收縮信貸規(guī)模,這就難以實現(xiàn)中央銀行減少貨幣供給的目的。
第四篇:三大貨幣政策工具的優(yōu)缺點(本站推薦)
三大貨幣政策工具的優(yōu)缺點
再貼現(xiàn)業(yè)務的主要優(yōu)點是,它有利于中央銀行發(fā)揮最后貸款者的作用,并且既能調(diào)節(jié)貨幣供給的總量,又調(diào)節(jié)貨幣供給的結(jié)構(gòu)。再貼現(xiàn)業(yè)務的主要缺點是再貼現(xiàn)業(yè)務的主動權(quán)在商業(yè)銀行,而不在中央銀行,這就限制中央銀行的主動性;再貼現(xiàn)率的調(diào)節(jié)作用有限。繁榮時期提高再貼現(xiàn)率未必能夠抑制商業(yè)銀行的再貼現(xiàn)需求,因為商業(yè)銀行的盈利更高;蕭條時期降低再貼現(xiàn)率也未必能刺激商業(yè)銀行的借款需求,因為此時的盈利水平更低。而且再貼現(xiàn)率不能經(jīng)常調(diào)整,否則市場利率的經(jīng)常波動,會使商業(yè)銀行無所適從。此外,再貼現(xiàn)業(yè)務的最大缺點在于它具有順經(jīng)濟走勢的傾向,繁榮時期的物價上漲使得再貼現(xiàn)票據(jù)的金額上升,貨幣供給增加;蕭條時期的物價下跌,又使得再貼現(xiàn)金額下降,貨幣供給減少。貨幣政策因此可能在繁榮時期“火上加油”,而在蕭條時期“雪上加霜”。
公開市場操作具有如下優(yōu)點:第一,中央銀行能及時運用公開市場操作,買賣任意規(guī)模的有價證券,從而精確地控制銀行體系的準備金和基礎(chǔ)貨幣,使之達到合理的水平。雖然其發(fā)生作用的途徑同再貼現(xiàn)率政策和準備金政策基本相同,但它的效果比這兩種政策更為準確,并且不受銀行體系反應程度的影響。在公開市場操作中,中央銀行始終處于積極主動的地位,完全可以按自己的意愿來實施貨幣政策。依弗里德曼之意,中央銀行實施公開市場操作是“主動出擊”,而非“被動等待”。第二,公開市場操作沒有“告示效應”,不會引起社會公眾對貨幣政策意向的誤解,因而,也不會造成經(jīng)濟的不必要紊亂。這就可以使中央銀行連續(xù)、靈活、不受時間數(shù)量方向限制地進行公開市場操作,而不會因為經(jīng)濟主體的適應性調(diào)整,造成經(jīng)濟運行的紊亂,即使中央銀行出現(xiàn)政策失誤也可以及時進行修正。這是具有強烈“告示效應”的再貼現(xiàn)率政策和準備金政策所做不到的。第三,中央銀行進行公開市場操作,不決定其它證券的收益率或利率,因而不會直接影響銀行的收益。另外,公開市場操作可以普遍運用,廣泛地影響社會經(jīng)濟活動。據(jù)此,弗里德曼堅持主張中央銀行可以用公開市場操作,完全取代法定準備金制度和進行再貼現(xiàn)業(yè)務。
公開市場業(yè)務必須具備以下三個條件,才能充分有效地發(fā)揮作用:(1)中央銀行必須具有強大的、足以干預和控制整個金融市場的金融實力;(2)要有一個發(fā)達、完善和全國性的金融市場,證券種類齊全且達到一定規(guī)模;(3)必須有其它政策工具的配合。如沒有存款準備金制度,就不能通過改變商業(yè)銀行的超額準備來影響貨幣供應量。公開市場業(yè)務最大的不足是缺乏這三個條件的國家不能有效地運用這個政策手段;此外,它的收效緩慢,因為國債買賣對貨幣供給及利率的影響需要一定時間才能緩慢地傳導到其它金融市場,影響經(jīng)濟運行。
與其它貨幣政策工具相比,存款準備金政策具有如下優(yōu)點:(1)中央銀行具有完全的自主權(quán),它是三大貨幣政策工具中最容易實施的手段;(2)存款準備率的變動對貨幣供應量的作用迅速,一旦確定,各商業(yè)銀行及其它金融機構(gòu)都必須立即執(zhí)行;(3)準備金制度對所有的商業(yè)銀行一視同仁,所有的金融機構(gòu)都同樣受到影響。
存款準備金政策的不足之處在于:一是作用過于巨大,其調(diào)整對整個經(jīng)濟和社會心理預期的影響都太大,不宜作為中央銀行日常調(diào)控貨幣供給的工具,中央銀行因此有將準備率固定化的傾向;二是其政策效果在很大程度上受商業(yè)銀行超額存款準備的影響。在商業(yè)銀行有大量超額準備的情況下,中央銀行提高法定存款準備金率,商業(yè)銀行會將超額準備的一部分充作法定準備,而不收縮信貸規(guī)模,這就難以實現(xiàn)中央銀行減少貨幣供給的目的。
存款準備金是指金融機構(gòu)為保證客戶提取存款和資金清算需要而準備的在中央銀行的存款,中央銀行要求的存款準備金占其存款總額的比例就是存款準備金率。中央銀行通過調(diào)整存款準備金率,可以影響金融機構(gòu)的信貸擴張能力,從而間接調(diào)控貨幣供應量。
如這次提高存款準備金率0.5個百分點后,累計達15%了,就是說商業(yè)銀行每吸收100萬存款,要見、要交存15萬到中央銀行,調(diào)控了貨幣供應量,防止信貸擴張,遏止物價上漲。
三大貨幣政策工具:
一、存款準備金
存款準備金,是限制金融機構(gòu)信貸擴張和保證客戶提取存款和資金清算需要而準備的資金。法定存款準備金率,是金融機構(gòu)按規(guī)定向中央銀行繳納的存款準備金占其存款的總額的比率。存款準備金率變動對商業(yè)銀行的作用過程如下:
當中央銀行提高法定準備金率時,商業(yè)銀行可提供放款及創(chuàng)造信用的能力就下降。因為準備金率提高,貨幣乘數(shù)就變小,從而降低了整個商業(yè)銀行體系創(chuàng)造信用、擴大信用規(guī)模的能力,其結(jié)果是社會的銀根偏緊,貨幣供應量減少,利息率提高,投資及社會支出都相應縮減。反之,亦然。
1984年,中國人民銀行開始建立存款準備金制度。十多年來,經(jīng)歷了四次調(diào)整,在當時都起到了積極作用——抑制經(jīng)濟過熱、物價上漲過快、貨幣投放過多的狀況。目前,中央銀行對存款準備金制度改革方向是要逐步恢復存款準備金支付清算和作為貨幣總量調(diào)控工具的功能,改變原來主要功能不在調(diào)控貨幣總量而在發(fā)揮集中資金,調(diào)整信貸結(jié)構(gòu)的作用。
二、公開市場業(yè)務
公開市場,是指各種有價證券自由成交,自由議價,其交易量和價格都必須公開顯示的市場。公開市場業(yè)務,是指中央銀行利用在公開市場上買賣有價證券的辦法來調(diào)節(jié)信用規(guī)模、貸幣供應量和利率以實現(xiàn)其金融控制和調(diào)節(jié)的活動,是貨幣政策的最重要的工具。
此業(yè)務的操作方法:
當中央銀行判斷社會上資金過多時,使賣出債券,相應地收回一部分資金;相反,則央行買入債券,直接增加金融機構(gòu)可用資金的數(shù)量。
我國的公開場業(yè)務從外匯操作起步,1996年又開辦買賣國債的公開市場業(yè)務。
三、再貼現(xiàn)
貼現(xiàn),是票據(jù)持票人在票據(jù)到期之前,為獲取現(xiàn)款而向銀行貼付一定利息的票據(jù)轉(zhuǎn)讓。再貼現(xiàn),是商業(yè)銀行或其他金融機構(gòu)將貼現(xiàn)所獲得的未到期票據(jù),向中央銀行作的票據(jù)轉(zhuǎn)讓。
貼現(xiàn)是商業(yè)銀行向企業(yè)提供資金的一種方式,再貼現(xiàn)是中央銀行向商業(yè)銀行提供資金的一種方式,兩者都是以轉(zhuǎn)讓有效票據(jù)——銀行承兌匯票為前提的。
再貼現(xiàn)是中央銀行的三大貨幣政策工具(公開市場業(yè)務、再貼現(xiàn)、存款準備金)之一,它不僅影響商業(yè)銀行籌資成本,限制商業(yè)銀行的信用張,控制貨幣供應總量,而且可以按國家產(chǎn)業(yè)政策的要求,有選擇地對不同種類的票據(jù)進行融資,促進結(jié)構(gòu)調(diào)整。一般來說,中央銀行的再貼現(xiàn)利率具有以下特點: (1)一種短期利率。因為中央銀行提供的貸款以短期為主,申請再貼現(xiàn)合格票據(jù),其期限一般不超過3個月,最長期限也在1年之內(nèi)。
(2)一種官定利率。它是根據(jù)國家信貨政策規(guī)定的,在一定程度上反映了中央銀行的政策意向
(3)一種標準利率或最低利率。如英格蘭銀行貼現(xiàn)及放款有多種差別利率,而其公布的再現(xiàn)貼現(xiàn)利率為最低標準。
中央銀行的貨幣政策工具可分為一般性政策工具和選擇性政策工具,傳統(tǒng)的三大貨幣政策工具就屬于一般性政策工具的范疇,也就是我們通常所說的“三大法寶”:再貼現(xiàn)政策、存款準備金政策和公開市場政策。
①再貼現(xiàn)政策。商業(yè)銀行或其他金融機構(gòu)向中央銀行以貼現(xiàn)所獲得的未到期票據(jù),被稱為再貼現(xiàn)(Rediscount);再貼現(xiàn)政策是指中央銀行干預和影響市場利率以及貨幣市場上的供給和需求,從而調(diào)節(jié)市場貨幣供應量的一種貨幣政策。
再貼現(xiàn)政策的優(yōu)點有二:一是能通過影響商業(yè)銀行或其他金融機構(gòu)向央行借款的成本來達到調(diào)整信貸規(guī)模和貨幣供應量的目的,再貼現(xiàn)率上升,商業(yè)銀行向中央銀行借款的成本上升,從而社會對借款的需求減少,達到了收縮信貸規(guī)模的目的。二是能產(chǎn)生一種“告示效應”,即貼現(xiàn)率的變動,可以作為向銀行和公眾宣布中央銀行政策意向的有效辦法,可以表明中央銀行貨幣政策的信號與它的方向,從而達到心理宣傳效果。
再貼現(xiàn)政策的局限表現(xiàn)在中央銀行處于被動地位,往往不能取得預期的效果,因為再貼現(xiàn)政策只能影響來貼現(xiàn)的銀行,對其他銀行只是間接地發(fā)生作用,政策的效果完全取決于商業(yè)銀行的行為。另外,再貼現(xiàn)政策工具的靈活性比較小,缺乏彈性,若央行經(jīng)常調(diào)整再貼現(xiàn)率,會使市場利率經(jīng)常波動而使企業(yè)和商業(yè)銀行無所適從。
②存款準備金政策。存款準備金政策是指中央銀行在法律所賦予的權(quán)力范圍內(nèi),通過調(diào)整存款準備金比率,來改變貨幣乘數(shù)、控制商業(yè)銀行的信用創(chuàng)造能力,間接地控制社會貨幣供應量的活動。
其優(yōu)點有三:一是有較強的告示效應,這點同于再貼現(xiàn)政策,二是法定存款準備金政策是具有法律效力的,威力很大,這種調(diào)整有強制性,三是準備金調(diào)整對貨幣供應量有顯著的影響效果,準備金率的微小調(diào)整會使貨幣供應量產(chǎn)生很大變化,主要通過兩個方面:對貨幣乘數(shù)的影響和對超額準備金的影響。
其缺點也主要是缺乏應有的靈活性,正因為該政策工具有較強的通知效應和影響效果,所以其有強大的沖擊力。這一政策工具只能在少數(shù)場合下使用,它只能作為調(diào)節(jié)信用的武器庫中一件威力巨大而不能經(jīng)常使用的武器。
③公開市場政策。所謂公開市場政策是指中央銀行在證券市場上公開買賣各種政府證券以控制貨幣供應量及影響利率水平的行為。公開市場政策的優(yōu)點在于以下幾點:
①通過公開市場業(yè)務可以左右整個銀行體系的基礎(chǔ)貨幣量,使它符合政策目標的需要。⑦中央銀行的公開市場政策具有“主動權(quán)”,即政策的效果并非取決于其他個體的行為,央行是“主動出擊”而非“被動等待”。
⑧公開市場政策可以適時適量地按任何規(guī)模進行調(diào)節(jié),具有其他兩項政策所無法比擬的靈活性,中央銀行賣出和買進證券的動作可大可小。
④公開市場業(yè)務有一種連續(xù)性的效果,央行能根據(jù)金融市場的信息不斷調(diào)整其業(yè)務,萬一發(fā)生經(jīng)濟形勢改變,可以迅速作反方向操作,以改正在貨幣政策執(zhí)行過程中可能發(fā)生的錯誤以適應經(jīng)濟情形的變化,這相較于其他兩種政策工具的一次性效果是優(yōu)越的。其主要的缺點一是對經(jīng)濟金融的環(huán)境要求高。公開市場業(yè)務的一個必不可少的前提是有一個高度發(fā)達完善的證券市場,其中完善包括有相當?shù)纳疃?、廣度和彈性,二是證券操作的直接影響標的是準備金,對商業(yè)銀行的信貸擴張和收縮還只是起間接的作用。
第五篇:三大貨幣政策工具的優(yōu)缺點
三大貨幣政策工具的優(yōu)缺點
再貼現(xiàn)業(yè)務的主要優(yōu)點是,它有利于中央銀行發(fā)揮最后貸款者的作用,并且既能調(diào)節(jié)貨幣供給的總量,又調(diào)節(jié)貨幣供給的結(jié)構(gòu)。再貼現(xiàn)業(yè)務的主要缺點是再貼現(xiàn)業(yè)務的主動權(quán)在商業(yè)銀行,而不在中央銀行,這就限制中央銀行的主動性;再貼現(xiàn)率的調(diào)節(jié)作用有限。繁榮時期提高再貼現(xiàn)率未必能夠抑制商業(yè)銀行的再貼現(xiàn)需求,因為商業(yè)銀行的盈利更高;蕭條時期降低再貼現(xiàn)率也未必能刺激商業(yè)銀行的借款需求,因為此時的盈利水平更低。而且再貼現(xiàn)率不能經(jīng)常調(diào)整,否則市場利率的經(jīng)常波動,會使商業(yè)銀行無所適從。此外,再貼現(xiàn)業(yè)務的最大缺點在于它具有順經(jīng)濟走勢的傾向,繁榮時期的物價上漲使得再貼現(xiàn)票據(jù)的金額上升,貨幣供給增加;蕭條時期的物價下跌,又使得再貼現(xiàn)金額下降,貨幣供給減少。貨幣政策因此可能在繁榮時期“火上加油”,而在蕭條時期“雪上加霜”。
公開市場操作具有如下優(yōu)點:第一,中央銀行能及時運用公開市場操作,買賣任意規(guī)模的有價證券,從而精確地控制銀行體系的準備金和基礎(chǔ)貨幣,使之達到合理的水平。雖然其發(fā)生作用的途徑同再貼現(xiàn)率政策和準備金政策基本相同,但它的效果比這兩種政策更為準確,并且不受銀行體系反應程度的影響。在公開市場操作中,中央銀行始終處于積極主動的地位,完全可以按自己的意愿來實施貨幣政策。依弗里德曼之意,中央銀行實施公開市場操作是“主動出擊”,而非“被動等待”。第二,公開市場操作沒有“告示效應”,不會引起社會公眾對貨幣政策意向的誤解,因而,也不會造成經(jīng)濟的不必要紊亂。這就可以使中央銀行連續(xù)、靈活、不受時間數(shù)量方向限制地進行公開市場操作,而不會因為經(jīng)濟主體的適應性調(diào)整,造成經(jīng)濟運行的紊亂,即使中央銀行出現(xiàn)政策失誤也可以及時進行修正。這是具有強烈“告示效應”的再貼現(xiàn)率政策和準備金政策所做不到的。第三,中央銀行進行公開市場操作,不決定其它證券的收益率或利率,因而不會直接影響銀行的收益。另外,公開市場操作可以普遍運用,廣泛地影響社會經(jīng)濟活動。據(jù)此,弗里德曼堅持主張中央銀行可以用公開市場操作,完全取代法定準備金制度和進行再貼現(xiàn)業(yè)務。
公開市場業(yè)務必須具備以下三個條件,才能充分有效地發(fā)揮作用:(1)中央銀行必須具有強大的、足以干預和控制整個金融市場的金融實力;(2)要有一個發(fā)達、完善和全國性的金融市場,證券種類齊全且達到一定規(guī)模;(3)必須有其它政策工具的配合。如沒有存款準備金制度,就不能通過改變商業(yè)銀行的超額準備來影響貨幣供應量。公開市場業(yè)務最大的不足是缺乏這三個條件的國家不能有效地運用這個政策手段;此外,它的收效緩慢,因為國債買賣對貨幣供給及利率的影響需要一定時間才能緩慢地傳導到其它金融市場,影響經(jīng)濟運行。
與其它貨幣政策工具相比,存款準備金政策具有如下優(yōu)點:(1)中央銀行具有完全的自主權(quán),它是三大貨幣政策工具中最容易實施的手段;(2)存款準備率的變動對貨幣供應量的作用迅速,一旦確定,各商業(yè)銀行及其它金融機構(gòu)都必須立即執(zhí)行;(3)準備金制度對所有的商業(yè)銀行一視同仁,所有的金融機構(gòu)都同樣受到影響。
存款準備金政策的不足之處在于:一是作用過于巨大,其調(diào)整對整個經(jīng)濟和社會心理預期的影響都太大,不宜作為中央銀行日常調(diào)控貨幣供給的工具,中央銀行因此有將準備率固定化的傾向;二是其政策效果在很大程度上受商業(yè)銀行超額存款準備的影響。在商業(yè)銀行有大量超額準備的情況下,中央銀行提高法定存款準備金率,商業(yè)銀行會將超額準備的一部分充作法定準備,而不收縮信貸規(guī)模,這就難以實現(xiàn)中央銀行減少貨幣供給的目的。