




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
hJavaJavaSSH(MVC)它強制性的把應用程序的輸入、處理和輸出分開。MVC中的模型、視圖、控制器分別擔負著不同的任務。輸入。視圖不進行任何業(yè)務邏輯處理。模型:模型表示業(yè)務數據和業(yè)務處理。相當于JavaBean。一個模型能為多個視圖提供數據。這提高了應用程序的重用性控制器:當用戶單擊Web頁面中的提交按鈕時,控制器接受請求并調用相應的模型去處理請求,然后根據處理的結果調用相應的視圖來顯示處理的結果。MVC的處理過程:首先控制器接受用戶的請求,調用相應的模型來進行業(yè)務處理,并返回數據給控制器。控制器調用相應的視圖來顯示處理的結果。并通過視圖呈現給用戶。StrutsStrutsstruts1.2Action是單例模式的并且必須是線程安全的,因為僅有一個Action的實Action或同步的。struts2.0Action為每一個請求產生一個實例,因此沒有線程安全問題。struts1.2Action依賴于ServletAPI,因為當一個Action被調用時d、可測性試要依賴于容器)。一個第三方擴展:strutsTestCase提供了一套struts1.2的模擬對象來進行測試。測試更容易。2.項目中為什么使用SSH大大提高開發(fā)效率。h系映射框架h。hibernate是個輕量級的持久性框架,功能豐富。系統(tǒng)的框架,但它不強迫你必須在每一層中必須使用Spring,因為它模塊化得很好,允許你根據自己的需要選擇使用它的某一個模塊;3.struts如何實現國際化2.編輯ApplicationRperties文件,在其中加入要使用國際化的信息,例e3.創(chuàng)建英文資源文件ApplicationResource_perites4.創(chuàng)建臨時中文資源文件ApplicationResource_perites例如:lable.welcom.china=中國歡迎您!行:native2ascii-encodinggb2312ApplicationResource_pertiesApplicationResource_zh_CN.properties<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>4.struts2.0的常用標簽1.往action里傳值:<inputname="userName"type="text"class="input6"size="15">2.顯示標簽property用于輸出指定值:<s:propertyvalue="userName"/><s:textname="user.userName"id="username"/>4.判斷<s:if></s:if>用于在頁面中判斷指定數據<s:iftest="userName==admin">….</s:if><s:else>….</s:else>siteratorList、Map、ArrayList等集合進行循環(huán)遍歷<s:iteratorvalue="userList"id="user"status="u"><s:propertyvalue="userName"/></a></s:iterator><s:param>子元素向URL地址發(fā)送請求參數<s:urlaction=""><s:paramname=""value=""></s:param></s:url>7.超鏈接<ahref>一般和<s:url>標簽一起使用,用于帶多個參數。<ahref="h<s:urlaction=""><s:paramname=""value=""></s:param><s:paramname=""value=""></s:param><s:paramname=""value=""></s:param></s:url><s:setname="user"value="userName"scope=”request”/>rmbeanactiontiles<<form-beans><form-beanname=""type=""></form-bean></form-beans><<action-mappings><actionpath=""attribute=""name=""parameter=""scope="request"type=""></action></action-mappings>input:輸入頁的路徑;onction<?xmlversion="1.0"encoding="UTF-8"?>Configuration1.1//EN""/struts/dtds/tiles-config_1_1.dtd"><tiles-definitions><definitionname="member-definition"path="/Jsp/layout.jsp"><putname="top"value="/mTop.do"/>h<putname="left"value="/mLeft.do"/><putname="main"value="/defaultMmain.do"/></definition></tiles-definitions>************<plug-inclassName="org.apache.struts.tiles.TilesPlugin"><set-propertyproperty="definitions-config"value="/WEB-INF/tiles-defs.xml"/><set-propertyproperty="definitions-parser-validate"value="true"/></plug-in>************************<init-param><param-name>definitions-config</param-name><param-value>/WEB-INF/tiles-defs.xml</param-value></init-param>**************************<actionpath="/member"parameter="member-definition"type="org.apache.struts.actions.ForwardAction"/>**************1.條件類型(沒標注的都比較簡單)logic:empty,logic:notEmpty;logic:equal,logic:notEqual,logic:lessThan,logic:greaterThan,logic:lessEqual,logic:greaterEqual;logic:present,logic:notPresent;logic:match,logic:notMatch;比較兩字符串是否相等,可以比較字符串的開始個部分。2.循環(huán)類型logic:iterateh3.轉發(fā)/重定向類型<global-forwards><forwardname="login"path="/loginForm.jsp"/></global-forwards>response.sendRedirect(),<logic:redirectname="login"paramId="employeeId"paramName="employee"property="id"/>action是單實例的。當多個用戶訪問一個請求的時候,服務器內存中只有一個與之對DispatchAction是Aciton的一個子類,主要解決了一個請求處理多個功能的問題舉一個小例子:有如下一個url:http://localhost:8080/myApp/addUserAction.do關操作,如果換成一下url:http://localhost:8080/myApp/UserAction.do?method=addhttp://localhost:8080/myApp/UserAction.do?method=deleteonh類里包含的多個屬性用于封裝用戶的請求參數。0.STRUTS的配置文件是什么?strutsstruts-config.xml<load-on-startup>0</load-on-startup>件,并創(chuàng)建用于封裝資源文件的MessageResources對象tContext中,對應的屬性名中有該模塊名稱的相應標識。另外,如果有相應配置的話,init方法還將初始化數據源和PlugInstresponse用用于子類重寫擴展其功能。hhionstrutshibernate刪查改(機試)xStrutsStruts2動的界面,隨著其他接口,使可選和定actionsupport執(zhí)行常用的接Struts象是實例對于每個對象不施加表現罰款,或影響垃圾收Struts,二是不耦合的一個貨表作為簡單的地圖,讓行動,以測試陷可以使用原來的請求和響應,如果需eStruts1Struts求采取行動班,以延長Struts是編程抽象類而不是接Struts動是單身,必須線程安Struts動的資源,必須線程安全的或同步。班Servleth語言表達有約束力的價值觀納入意見控制行動Struts1。由于其他的JavaBeans不能被用來作為actionforms,開發(fā)商常常造成多余的用來作為一種替代創(chuàng)造常規(guī)但相對薄弱的收集和索引財產的支約束力的物體進入該網頁的背景下訪Struts持手冊審定通過驗證方actionform個擴展到同一階層,但不能鏈,以驗證就分Struts的請求處理器 Struts以測試實例化的行持也使測試更簡單。入屬性可能是豐富的對象類型可能有包括商業(yè)利益或域對象,可以被用來作也支持一個更強大和靈活的語言表達所謂的“對象圖形符號語言” (ognl)。有耦合您的看法,以對象類型,這是渲見覆蓋的類型可能有相同的屬性名稱,框架包括轉換為基本和共同的對象類型和原始。的驗證框架支持鏈接驗證分為分性能的使用驗證的定義為性能一流的類型。Struts創(chuàng)造不同的生命周期對每行動的基礎上通過攔截堆疊。自定義棧,才能創(chuàng)造和使用不同的行hh14.Struts/webwork的工作機制,它有哪些標簽瀏覽器發(fā)送請求,例如請求/mypage.action、/reports/myreport.pdf等。核心控制器FilterDispatcher根據請求決定調用合適的Action。Action只是一個控制器,它會調用業(yè)務邏輯組件來處理用戶的請求。erHibernate1.什么是Hibernate的并發(fā)機制?怎么去處理并發(fā)問題?a、Hibernate的Session對象是非線程安全的,對于單個請求,單個會話,單個的工作單元(即單個事務,單個線程),它通常只使用一次,然后就丟棄。如果一個Session實例允許共并發(fā)運行的,例如Httprequest,sessionbeans將會導致出現資源爭用。只要用戶足夠快的點擊瀏覽器的“刷新”,就會導致兩個并發(fā)運行的線程使用同一個Session。b、多個事務并發(fā)訪問同一塊資源,可能會引發(fā)第一類丟失更新,臟讀,幻讀,不可重復讀,第二類丟失更新一系列的問題。解決方案:設置事務隔離級別。RepeatableRead:可重復讀ReadUncommitted:未提交數據讀。隔離級別最差設置鎖:樂觀鎖和悲觀鎖。樂觀鎖:使用版本號或時間戳來檢測更新丟失,在<class>的映射中設置optimistic-lock="all"可以在沒有版本或者時間戳屬性映射的情況下實現版本檢查,此時natehehLockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;gorg.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'sessionFactory'definedinServletContextresource[/WEB-INF/applicationContext.xml]:Initializationofbeanfailed;nestedexceptionisorg.hibernate.MappingException:Repeatedcolumninmappingforentity:com.xindeco.myregister.pojo.MyRegisterInfocolumn:password(shouldbemappedwithinsert="false"update="false")<propertyname="password"type="java.lang.String"update="true"insert="true"access="property"column="password"length="32"<propertyname="repassword"type="java.lang.String"update="false"insert="false"access="property"column="password"length="32"org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'sessionFactory'definedinServletContextresource[/WEB-INF/applicationContext.xml]:Initializationofbeanfailed;nestedexceptionisorg.hibernate.PropertyNotFoundException:CouldnotfindagetterforIDinclassheLongid然后hql語句也是面向對象的,它的查詢語句不是查詢數據庫而是查詢類的,這些實現te用Query.setFirstResult():設置要顯示的第一行數據,Query.setMaxResults():設置要顯示的最后一行數據。notin(selecttabIdtop(2-1)*5fromtable);6.hibernate的對象的三種持久化狀態(tài),并給出解釋?不清楚hibernate的對象的三種持久化狀態(tài),只知道hibernate對象的三種狀態(tài),下面有介hibernate中一對多配置文件會相應的映射為兩張表,并且它們之間的關系是一對多8.update()和saveOrUpdate()的區(qū)別?存在的話,就不能使用update()方法。果是持久化了的對象調用saveOrUpdate()則會9.hibernate的三種狀態(tài)之間如何轉換h當對象由瞬時狀態(tài)(當對象由瞬時狀態(tài)(Transient)轉變到save()時,就變成了持久化狀態(tài)。sistent對象變成游離狀態(tài)(Detached),但數據庫中還是存在的。當游離狀態(tài)(Detached)update()時,又變?yōu)榱顺志脿顟B(tài)(Persistent)。tentdeleteTransient2.網絡連接可能出了問題3.連接配置錯了5.LIB下加入相應驅動,數據連接代碼是否有誤6.數據庫配置可能有問題7.當前聯(lián)接太多了,服務器都有訪問人數限制的8.服務器的相應端口沒有開,即它不提供相應的服務9hibernate有哪些緩存,分別怎么使用?11.Hibernate介紹Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJBB的J2EE架構中取代CMP,完成數據持久化的重任。Hibernate的核心接口一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心接口在任何開發(fā)中都會用到。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這五個核心接口分別加以介紹。·Session接口:Session接口負責執(zhí)行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同于JSP應用中的HttpSession。這里當使用session這個術語時,其實指的是Hibernate中的session,而以后會將HttpSesion對象稱為用戶session?!essionFactory接口:SessionFactroy接口負責初始化Hibernate。它充當數據存儲源的代理,并負責創(chuàng)建Session對象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級的,因為一般情況下,一個項目通常只需要一個SessiohnFactory就夠,當需要操作多個數據庫時,可以為每個數據庫指定一個SessionFactory。h·Configuration接口:Configuration接口負責配置并啟動Hibernate,創(chuàng)建SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory對象。·Transaction接口:Transaction接口負責事務相關的操作。它是可選的,開發(fā)人員也可以設計編寫自己的底層事務處理代碼?!uery和Criteria接口:Query和Criteria接口負責執(zhí)行各種數據庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。12.Hibernate主鍵介紹AssignedAssigned方式由程序生成主鍵值,并且要在save()之前指定否則會拋出異常特點:主鍵的生成值完全由用戶決定,與底層數據庫無關。用戶需要維護主鍵值,在調用session.save()之前要指定主鍵值。HiloHilo使用高低位算法生成主鍵,高低位算法使用一個高位值和一個低位值,然后把算法得到的兩個值拼接起來作為數據庫中的唯一主鍵。Hilo方式需要額外的數據庫表和字段提供高位值來源。默認請況下使用的表是hibernate_unique_key,默認字段叫作next_hi。next_hi必須有一條記錄否則會出現錯誤。特點:需要額外的數據庫表的支持,能保證同一個數據庫中主鍵的唯一性,但不能保證多個數據庫之間主鍵的唯一性。Hilo主鍵生成方式由Hibernate維護,所以Hilo方式與底層數據庫無關,但不應該手動修改hi/lo算法使用的表的值,否則會引起主鍵重復的異常。IncrementIncrement方式對主鍵值采取自動增長的方式生成新的主鍵值,但要求底層數據庫的支持Sequence。如Oracle,DB2等。需要在映射文件xxx.hbm.xml中加入Increment標志符的設置。特點:由Hibernate本身維護,適用于所有的數據庫,不適合多進程并發(fā)更新數據庫,適合單一進程訪問數據庫。不能用于群集環(huán)境。IdentityIdentity當時根據底層數據庫,來支持自動增長,不同的數據庫用不同的主鍵增長方式。特點:與底層數據庫有關,要求數據庫支持Identity,如MySQl中是auto_increment,SQLServer中是Identity,支持的數據庫有MySql、SQLServer、DB2、Sybase和HypersonicSQL。Identity無需Hibernate和用戶的干涉,使用較為方便,但不便于在不同的數據庫之間移植程序。hSequenceSequence需要底層數據庫支持Sequence方式,例如Oracle數據庫等特點:需要底層數據庫的支持序列,支持序列的數據庫有DB2、PostgreSql、Qracle、SAPDb等在不同數據庫之間移植程序,特別從支持序列的數據庫移植到不支持序列的數據庫需要修改配置文件NNativeNative主鍵生成方式會根據不同的底層數據庫自動選擇Identity、Sequence、Hilo主鍵生成方式特點:根據不同的底層數據庫采用不同的主鍵生成方式。由于Hibernate會根據底層數據庫采用不同的映射方式,因此便于程序移植,項目中如果用到多個數據庫時,可以使用這種方式。UUIDUUID使用128位UUID算法生成主鍵,能夠保證網絡環(huán)境下的主鍵唯一性,也就能夠保證在不同數據庫及不同服務器下主鍵的唯一性。特點;能夠保證數據庫中的主鍵唯一性,生成的主鍵占用比較多的存貯空間ForeignGUIDForeign用于一對一關系中。GUID主鍵生成方式使用了一種特殊算法,保證生成主鍵的唯一性,支持SQLServer和MySQL13.Hibernate源碼中幾個包的作用簡要介紹net.sf.hibernate.*該包的類基本上都是接口類和異常類net.sf.hibernate.cache.*JCS的實現類netnet.sf.hibernate.cfg.*配置文件讀取類net.sf.hibernate.collection.*Hibernate集合接口實現類,例如List,Set,Bag等等,Hibernate之所以要自行編寫集合接口實現類是為了支持lazyloadingnetnet.sf.hibernate.connection.*幾個數據庫連接池的Providernet.sf.hibernate.dialect.*支持多種數據庫特性,每個Dialect實現類代表一種數據庫,描述了該數據庫支持的數據類型和其它特點,例如是否有AutoIncrement,是否有Sequence,是否有分頁sql等等net.sf.hibernate.eg.*Hibernate文檔中用到的例子net.sf.hibernate.engine.*這個包的類作用比較散netnet.sf.hibernate.expression.*HQL支持的表達式HQL實現net.sf.hibernate.hq.*net.sf.hibernate.id.*hnetnet.sf.hibernate.impl.*最核心的包,一些重要接口的實現類,如果Session,SessionFactory,Query等net.sf.hibernate.jca.*類net.sf.hibernate.jmx.*JCA支持,把Session包裝為支持JCA的接口實現我不懂JMX,只知道JMX是用來編寫AppServer的管理程序的,大概是JMX部分接口的實現,使得AppServer可以通過JMX接口管理Hibernatenetnet.sf.hibernate.loader.*也是很核心的包,主要是生成sql語句的net.sf.hibernate.lob.*Blob和Clob支持netnet.sf.hibernate.mapping.*hbm文件的屬性實現net.sf.hibernate.metadata.*PO的Meta實現net.sf.hibernate.odmg.*ODMG是一個ORM標準,這個包是ODMG標準的實現類netnet.sf.hibernate.persister.*核心包,實現持久對象和表之間的映射xy.*Proxy和LazyLoading支持net.sf.hibernate.ps.*該包是PreparedStatmentCachenet.sf.hibernate.sql.*生成JDBCsql語句的包net.sf.hibernate.test.*測試類,你可以用junit來測試Hibernatenet.sf.hibernate.tool.hbm2ddl.*用hbm配置文件生成DDLnet.sf.hibernate.transaction.*HibernateTransaction實現類net.sf.hibernate.type.*Hibernate中定義的持久對象的屬性的數據類型net.sf.hibernate.util.*一些工具類,作用比較散net.sf.hibernate.xml.*XML數據綁定14.緩存管理 Hibernate中提供了兩級Cache,第一級別的緩存是Session級別的緩存,它是屬于事務范圍的緩存。這一級別的緩存由hibernate管理的,一般情況下無需進行干預;第二級別的緩存是SessionFactory級別的緩存,它是屬于進程范圍或群集范圍的緩存。這一級別的緩存可以進行配置和更改,并且可以動態(tài)加載和卸載。Hibernate還為查詢結果提供了一個查詢緩存,它依賴于第二級緩存。1.一級緩存和二級緩存的比較:第一級緩存第二級緩存存放數據的形式相互關聯(lián)的持久化對象對象的散裝數據緩存的范圍事務范圍,每個事務都有單獨的第一級緩存進程范圍或集群范圍,緩存被同一個進程或集群范圍內的所有事務共享并發(fā)訪問策略由于每個事務都擁有單獨的第一級緩存,不會出現并發(fā)問題,無需提供并發(fā)訪問策略由于多個事務會同時訪問第二級緩存中相同數據,因此必須提供適當的并發(fā)訪問策略,來保證特定的事務隔離級別數據過期策略沒有提供數據過期策略。處于一級緩存中的對象永遠不會過期,除非應用程序顯式清空緩存或者清除特定的對象必須提供數據過期策略,如基于內存的緩存中的對象的最大數目,允許對象處于緩存h中的最長時間,以及允許對象處于緩存中的最長空閑時間物理存儲介質內存內存和硬盤。對象的散裝數據首先存放在基于內在的緩存中,當內存中對象的數目達到數據過期策略中指定上限時,就會把其余的對象寫入基于硬盤的緩存中。緩存的軟件實現在Hibernate的Session的實現中包含了緩存的實現由第三方提供,Hibernate僅提供了緩存適配器(CacheProvider)。用于把特定的緩存插件集成到Hibernate中。啟用緩存的方式只要應用程序通過Session接口來執(zhí)行保存、更新、刪除、加載和查詢數據庫數據的操作,Hibernate就會啟用第一級緩存,把數據庫中的數據以對象的形式拷貝到緩存中,對于批量更新和批量刪除操作,如果不希望啟用第一級緩存,可以繞過HibernateAPI,直接通過JDBCAPI來執(zhí)行指操作。用戶可以在單個類或類的單個集合的粒度上配置第二級緩存。h如果類的實例被經常讀但很少被修改,就可以考慮使用第二級緩存。只有為某個類或集合配置了第二級緩存,Hibernate在運行時才會把它的實例加入到第二級緩存中。用用戶管理緩存的方式第一級緩存的物理介質為內存,由于內存容量有限,必須通過恰當的檢索策略和檢索方式來限制加載對象的數目。Session的evit()方法可以顯式清空緩存中特定對象,但這種方法不值得推薦。第二級緩存的物理介質可以是內存和硬盤,因此第二級緩存可以存放大量的數據,數據過期策略的maxElementsInMemory屬性值可以控制內存中的對象數目。管理第二級緩存主要包括兩個方面:選擇需要使用第二級緩存的持久類,設置合適的并發(fā)訪問策略:選擇緩存適配器,設置合適的數據過期策略。2.一級緩存的管理:當應用程序調用Session的save()、update()、savaeOrUpdate()、get()或load(),以及調用查詢接口的list()、iterate()或filter()方法時,如果在Session緩存中還不存在相應的對象,Hibernate就會把該對象加入到第一級緩存中。當清理緩存時,Hibernate會根據緩存中對象的狀態(tài)變化來同步更新新數據庫。Session為應用程序提供了兩個管理緩存的方法:evict(Objectobj):從緩存中清除參數指定的持久化對象。clear():清空緩存中所有持久化對象。3.二級緩存的管理:3.1.Hibernate的二級緩存策略的一般過程如下:1)條件查詢的時候,總是發(fā)出一條select*fromtable_namewhere….(選擇所有字段)這樣的SQL語句查詢數據庫,一次獲得所有的數據對象。2)把獲得的所有數據對象根據ID放入到第二級緩存中。3)當Hibernate根據ID訪問數據對象的時候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那么從二級緩存中查;查不到,再查詢數據庫,把結果按照ID放入到緩存。4)刪除、更新、增加數據的時候,同時更新緩存。Hibernate的二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的QueryCache。h3.2.什么樣的數據適合存放到第二級緩存中?1很少被修改的數據2不是很重要的數據,允許出現偶爾并發(fā)的數據3不會被并發(fā)訪問的數據4參考數據,指的是供應用參考的常量數據,它的實例數目有限,它的實例會被許多其他類的實例引用,實例極少或者從來不會被修改。33.3.不適合存放到第二級緩存的數據?1經常被修改的數據2財務數據,絕對不允許出現并發(fā)3與其他應用共享的數據。3.4.常用的緩存插件Hibernater的二級緩存是一個插件,下面是幾種常用的緩存插件:EhCache:可作為進程范圍的緩存,存放數據的物理介質可以是內存或硬盤,對Hibernate的查詢緩存提供了支持。OSCache:可作為進程范圍的緩存,存放數據的物理介質可以是內存或硬盤,提供了豐富的緩存數據過期策略,對Hibernate的查詢緩存提供了支持。SwarmCache:可作為群集范圍內的緩存,但不支持Hibernate的查詢緩存。JBossCache:可作為群集范圍內的緩存,支持事務型并發(fā)訪問策略,對Hibernate的查詢緩存提供了支持。3.5.配置二級緩存的主要步驟:1)選擇需要使用二級緩存的持久化類,設置它的命名緩存的并發(fā)訪問策略。這是最值得認真考慮的步驟。2)選擇合適的緩存插件,然后編輯該插件的配置文件。SprinSpring控制反轉IOCAOP2.spring中的哪個類的哪個方法可用于獲取bean◆目的:解決企業(yè)應用開發(fā)的復雜性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應用功能簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架?!糨p量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類?!艨刂品崔D——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。h◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業(yè)務邏輯與系統(tǒng)級服務(例如審計(auditing)和事務()管理)進行內聚性的開發(fā)。應用對象只實現它們應該做的——完成業(yè)務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統(tǒng)級關注點,例如日志或事務支持?!羧萜鳌猄pring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創(chuàng)建——基于一個可配置原型(prototype),你的bean可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯(lián)的。然而,Spring不應該被混同于傳統(tǒng)的重量級的EJB容器,它們經常是龐大與笨重的,難以使用?!艨蚣堋猄pring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發(fā)留給了你。所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。g面向切面編程:主要是橫切一個關注點,將一個關注點模塊化成一個切面。在切面上聲明一個通知(Advice)和切入點(Pointcut);通知:是指在切面的某個特定以使通知(Advice)的主體部分獲得連接點信息。)上執(zhí)行的動作。通知中定義了要插入的方法。切入點:切入點的內容是一個表達式,以描述需要在哪些對象的哪些方法上插入通知中定義的方法。nga、定義一個事務管理器b、配置事務特性(相當于聲明通知。一般在業(yè)務層的類的一些方法上定義事務)c、配置哪些類的哪些方法需要配置事務(相當于切入點。一般是業(yè)務類的方法上)讀取配置文件6.spring在項目中如何充當粘合劑1、在項目中利用spring的IOC(控制反轉或依賴注入),明確地定義組件接口(如UserDAO),開發(fā)者可以獨立開發(fā)各個組件,然后根據組件間的依賴關系組裝(UserAction依的實現)結合起來了。2、spring的事務管理把hibernate對數據庫的操作進行了事務配置。7.spring的事務如何配置s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防洪堤加固工程施工合同
- 2023-2024學年天津市中小學生mixly創(chuàng)意編程 第11課 自動變速風扇-教學設計
- 個人與家政公司服務合同范本
- 2023-2024學年人教版高中信息技術必修二第三章第二節(jié)《 信息系統(tǒng)中的通信網絡》教學設計
- 8《我們受到特殊保護》(第2課時)(教學設計)2024-2025學年統(tǒng)編版道德與法治六年級上冊
- 股東投資合伙合同樣本
- 標準房產買賣合同范本解析
- 戰(zhàn)略合作合同樣本Top10
- 11 我是一張紙 第二課時 教學設計-2023-2024學年道德與法治二年級下冊統(tǒng)編版
- Module 2 Unit 2 It will show in Harbin(教學設計)-2023-2024學年外研版(三起)英語六年級下冊
- 《環(huán)境感知技術》2024年課程標準(含課程思政設計)
- 礦山用電安全培訓課件
- 2025年中考語文一輪復習:八年級上冊知識點梳理
- 航空物流運輸服務標準
- 運用HFMEA品管工具優(yōu)化輸血全流程醫(yī)院品質管理案例(血液科輸血科信息科醫(yī)務科護理部)
- 《EEG信號特征提取及腦卒中分類預測研究》
- 醫(yī)療設備維保投標方案(技術方案)
- 非甾體抗炎藥圍術期鎮(zhèn)痛專家共識(2024 版)解讀
- 寧德新能源verify測試題庫
- 肝細胞癌轉化治療
- 護理管理課件
評論
0/150
提交評論