




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第十九章spring的依賴注入及Aop詳解理論部分本章目標(biāo)掌握Spring的三種注入方式掌握用ref的屬性指定依賴的3種模式理解集合的注入方式了解自動裝配的五種模式了解Spring中的AOP使用ProxyFactoryBean創(chuàng)建AOP代理了解spring中AOP的三種代理方式理解Spring的事務(wù)處理掌握使用spring管理Hibernate依賴注入的三種方式依賴注入的意義
讓組件依賴于抽象,當(dāng)組件要與其他實際對象發(fā)生依賴關(guān)系時,通過抽象來注入依賴的實際對象。依賴注入的三種方式
接口注入、SET注入、構(gòu)造器注入接口注入
接口注入指的就是在接口的定義中要注入的信息,并通過接口完成注入。接口注入的方式接口注入的具體步驟(1)編寫接口
publicinterfaceMyTestBean{ publicStringmyaction(); }(2)編寫類實現(xiàn)此接口publicclassMyTestAction1implementsMyTestBean{ privateStringcname; publicStringmyaction(){ //將得到的屬性轉(zhuǎn)換為大寫 returncname.toUpperCase(); } publicStringgetCname(){ returncname; } publicvoidsetCname(Stringcname){ ame=cname; }}接口注入的方式—配置bean到xml文件中編寫spring的配置文件,配置bean的信息<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=""xmlns:xsi=""xsi:schemaLocation="/spring-beans-2.0.xsd">
<!--id用來唯一表示該bean,class用來表示該bean的來源--> <beanid="myaction1"class="com.bean.MyTestAction1"> <!-通過依賴注入完成屬性的賦值- <propertyname="cname"> <value>zhangsan</value> </property> </bean></beans>接口注入的方式—編寫測試public
classUseActionClass{public
static
voidmain(String[]args){//獲取xml文件所在的路徑Stringpath=UseActionClass.class.getClass().getResource("/").getPath();//初始化上下文關(guān)系A(chǔ)pplicationContextctx=newFileSystemXmlApplicationContext(path+"/applicationContext.xml");//通過spring配置文件獲取bean的對象,并有父類來接受MyTestBeanmybean=(MyTestBean)ctx.getBean("myaction1");//獲取接口中的方法Strings=mybean.myaction();//打印測試的結(jié)果System.out.println(s);}}接口注入的原則在接口注入中,定義的接口必須通過實現(xiàn)類來完成。在測試類中,通過ApplicationContext對象來呼叫bean的實現(xiàn),并傳遞給父類。若要改變其方法,只需要將子類注入進xml文件中進行組裝, 讓組件依賴于抽象,當(dāng)組件要與其他實際對象發(fā)生依賴關(guān)系時,通過抽象來注入依賴的實際對象。SET注入方式Set注入指的是在接受注入的類中定義一個set方法,并在參數(shù)中定義需要注入的元素實現(xiàn)的步驟編寫具有set方法的類public
classMyclass{privateStringmystr;public
voidsetMystr(Stringmystr){this.mystr=mystr;}publicStringgetStr(){return
mystr;}}Set注入配置文件的編寫<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=""xmlns:xsi=""xsi:schemaLocation="/spring-beans-2.0.xsd"><!--id用來唯一表示該bean,class用來表示該bean的來源--><beanid="myclass1"class="com.bean.Myclass"/></beans>Set的測試代碼public
classUseMyClass{public
static
voidmain(String[]args){//獲取xml文件所在的路徑String path=UseActionClass.class.getClass().getResource("/").getPath();//初始化上下文關(guān)系A(chǔ)pplicationContextctx=newFileSystemXmlApplicationContext(path+"/myspring.xml");//通過spring配置文件獲取bean的對象,并有父類來接受Myclassmybean=(Myclass)ctx.getBean("myclass1");mybean.setMystr("set注入成了!");System.out.println(mybean.getStr());}}運行結(jié)果:
log4j:WARNNoappenderscouldbefoundforlogger(org.springframework.context.support.FileSystemXmlApplicationContext).log4j:WARNPleaseinitializethelog4jsystemproperly.set注入成了!構(gòu)造器的注入構(gòu)造器的注入就是在接受注入的類中定義一個構(gòu)造方法,并在參數(shù)中定義需要注入的元素編寫帶有構(gòu)造器的類,并傳遞需要注入的元素public
classMyClass2{privateStringstr;publicMyClass2(Stringmystr){str=mystr;}publicStringgetStr(){return
str;}}在配置文件中注入類<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=""xmlns:xsi=""xsi:schemaLocation="/spring-beans-2.0.xsd"><!--id表識bean的名稱,class指出類的來源--><beanid="myclass2"class="com.bean.Myclass2"><!--說明給第幾個構(gòu)造器傳遞參數(shù),進行注入--><constructor-argindex="0"><value>HELLOWORLD</value></constructor-arg></bean></beans>構(gòu)造器注入的測試類public
classUseClass2{public
static
voidmain(String[]args){//獲取xml文件所在的路徑Stringpath=UseActionClass.class.getClass().getResource("/").getPath();//初始化上下文關(guān)系A(chǔ)pplicationContextctx=newFileSystemXmlApplicationContext(path+"/myspring2.xml");//通過spring配置文件獲取bean的對象,并有父類來接受MyClass2mybean=(MyClass2)ctx.getBean("myclass2");//獲取接口中的方法Strings=mybean.getStr();//打印測試的結(jié)果System.out.println(s);}}ref的屬性指定依賴—Bean屬性指定用ref元素的bean屬性指定被參考指定引用的BEAN是spring中最常見的形式,它允許被指向的bean可以在同一個xml文件中,也可以不再同一個xml文件中。
Spring1.xml文件
<?xmlversion="1.0"encoding="UTF-8"?><beans…………><!--id表識bean的名稱,class指出類的來源--><beanid="loginbean"class="com.bean.LoginBean"/></beans>--spring2.xml文件
<beans………….><!--id表識bean的名稱,class指出類的來源--><beanid="logindao"class="com.bean.LoginDao"><propertyname="login"><refbean="loginbean"/></property></bean></beans>集合的注入方式—List注入方式集合類型的注入方式
當(dāng)類中存在集合類型的屬性,采用的一種注入機制。編寫帶有List屬性的類,并將其注入到spring的配置文件中。publicclassListBean{ privateListls; publicListgetLs(){ returnls; } publicvoidsetLs(Listls) { this.ls=ls; }}<beanid="mylist"class="com.bean.ListBean"><propertyname="ls"><list><value>aa</value><value>bb</value><value>cc</value></list></property></bean>下面是測試代碼
//通過spring配置文件獲取bean的對象ListBeanmybean=(ListBean)ctx.getBean("mylist");Listls=mybean.getLs();for(inti=0;i<ls.size();i++){System.out.println(ls.get(i));}集合的注入方式—Set注入方式<beanid="mylist"class="com.bean.ListBean"><propertyname="ls"><set><value>aa</value><value>bb</value><value>cc</value></set></property></bean>集合的注入方式—Map注入方式<beanid="mylist"class="com.bean.ListBean"><propertyname="ls"><map><entrykey="1"><value>技術(shù)部</value></entry><entrykey="2"><value>財務(wù)部</value></entry><entrykey="3"><value>市場部</value></entry></map></property></bean>集合的注入方式—Properties注入方式<beanid="mylist"class="com.bean.ListBean"><propertyname="ls"><props><propkey="1">技術(shù)部</prop><propkey="2">財務(wù)部</prop><propkey="3">市場部</prop></props></property></bean>自動裝配的五種模式Byname模式
通過bean的屬性名稱自動裝配Bytype模式
如果配置文件中正好有一個與屬性類型一樣的bean,就自動裝配這個屬性Constructor模式
根據(jù)構(gòu)造函數(shù)的參數(shù)進行自動裝配。\Autodetect
通過對bean檢查類的內(nèi)部來選擇Constructor或者bytype,如果沒有構(gòu)造器,就用bytype(根據(jù)類型)裝配,有構(gòu)造器,就先使用構(gòu)造器裝配。Spring中的AOPAOP(AspectOrientedProgramming)面向方面的編程。他使程序員可以更好的將本不該彼此粘合在一起的功能分離開。AOP是一種思想,他和具體的實現(xiàn)技術(shù)無關(guān)。任何一種符合AOP思想的技術(shù)實現(xiàn)都可看作AOP的實現(xiàn)。它主要用于和業(yè)務(wù)關(guān)系不大的代碼,例如日志、權(quán)限、異常、事務(wù)處理等等。使用AOP就不用在業(yè)務(wù)邏輯中實現(xiàn)與業(yè)務(wù)功能關(guān)系不大的代碼,從而降低了代碼的耦合性,從而達到易于維護和重用的目的。ProxyFactoryBean創(chuàng)建AOP代理proxyFactoryBean的主要功能在于代理目標(biāo)類的所有方法。也可以理解為對接口的代理。代理方式如下:首先編寫操作接口public
interfaceDaoInterface{ public
booleansave(Objectob); public
booleanupdate(Objectob); public
booleandel(Stringid); publicObjectfindById(Stringid); publicVectorfindAll();}ProxyFactoryBean創(chuàng)建AOP代理編寫業(yè)務(wù)接口的實現(xiàn)類public
classEmpDaoimplementsDaoInterface{ Loggerlog=Logger.getLogger(EmpDao.class); public
booleandel(Stringid){ //TODO
自動生成方法存根 System.out.println("正在刪除數(shù)據(jù)!"); log.log(Level.INFO,"正在刪除數(shù)據(jù)!");//使用日志 return
false; }
……}ProxyFactoryBean創(chuàng)建AOP代理(xml配置)<beanid="empdao"class="com.bean.EmpDao"/><!--設(shè)定代理類--><beanid="mypoxy"class="org.springframework.aop.framework.ProxyFactoryBean"> <propertyname="proxyInterfaces"> <value>com.bean.DaoInterface</value> </property> <!--程序中的切入點--> <propertyname="target"> <refbean="empdao"/>
</property></bean>指向接口的實現(xiàn)類指定特定的接口ProxyFactoryBean創(chuàng)建AOP代理(使用類)public
classUseProxyFactorBean{public
static
voidmain(String[]args){ String path=UseProxyFactorBean.class.getClass().getResource("/").getPath(); ApplicationContextctx=new FileSystemXmlApplicationContext(path+"/applicationContext.xml"); DaoInterface factorybean=(DaoInterface)ctx.getBean("mypoxy"); factorybean.save("aaa"); }}直接返回接口類型spring中AOP的三種代理方式第一種就是前面介紹的proxyFactoryBean的代理,這里就不再贅述。第二種就是CGLIB(CodeGeneratorLibrary--代碼生成類庫)代理。使用它的好處在于不用像java的動態(tài)代理那樣去實現(xiàn)特定的接口,一個普通的java類就可以了。Spring中的自動代理,就是減少重復(fù)性的工作。spring中AOP的三種代理方式--CGLIB修改上例的配置文件信息(sping.xml)
<beanid="mypoxy"class="org.springframework.aop.framework.ProxyFactoryBean"> <!—設(shè)定CGLIB代理
<propertyname="proxyTargetClass"> <value>true</value> </property> <!--程序中的切入點--> <propertyname="target"> <refbean="empdao"/>
</property></bean>
好處在于不在指定特定的接口了!不在指定特定接口使用CGLIB代理完成方法調(diào)用的前通知Advice通知請求中斷請求的通知在于我們的業(yè)務(wù)類在調(diào)用以前就開始自動執(zhí)行的一種方式。Spring提供了以下幾種執(zhí)行方式1.Interceptionaroundadvice
Spring中最基本的Advice類型,提供了針對PointCut的預(yù)處理、后處理過程支持。我們將使用Interceptionaroundadvice完成這里的實例。2.Beforeadvice
僅面向了PointCut的預(yù)處理。3.Throwsadvice
僅面向PointCut的后處理過程中的異常處理。使用CGLIB代理完成方法調(diào)用的前通知4.AfterReturningadvice
僅面向PointCut返回后的后處理過程。5.Introductionadvice
Spring中較為特殊的一種Advice,僅面向Class層面(而不像上述Advice面向方法層面)。通過Introductionadvice我們可以實現(xiàn)多線程訪問中的類鎖定。編寫自己的業(yè)務(wù)接口及實現(xiàn)類業(yè)務(wù)接口
packagecom.test;
publicinterfaceITest{ publicStringexecute(Stringstr); }實現(xiàn)類
packagecom.test;publicclassMyTestimplementsITest{publicStringexecute(Stringstr){//TODOAuto-generatedmethodstubSystem.out.println("主業(yè)務(wù)方法正在執(zhí)行.....");return"主業(yè)務(wù)方法返回的結(jié)果---->"+str;}}中斷處理類的編寫Spring中采用了AOP聯(lián)盟(AOPAlliance)12的通用AOP接口(接口定義位于aopalliance.jar)。這里我們采用aopalliance.jar中定義的MethodInterceptor作為我們的Advice實現(xiàn)接口
類代碼如下:packagecom.bean;importjava.io.Serializable;ercept.*;publicclassMyMothedInterceptimplementsMethodInterceptor,Serializable{publicObjectinvoke(MethodInvocationarg0)throwsThrowable{System.out.println("===================================");System.out.println("中斷請求開始執(zhí)行......");System.out.println("5秒以后處理業(yè)務(wù)邏輯......");try{Thread.sleep(5000);}catch(RuntimeExceptione){e.printStackTrace();}System.out.println("========中斷處理調(diào)用======");Objectobj=ceed();System.out.println("中斷處理邏輯處理完成......");System.out.println("處理相關(guān)的日志信息......");System.out.println("打印相關(guān)的消息......");System.out.println(“====中斷請求執(zhí)行完成=======");returnobj;}}在spring.xml文件中的配置Spring.xml文件中的配置信息如下:<!--加入自己的中斷請求類--><beanid="mypointrequest"class="com.bean.MyMothedIntercept"/><!--注入自己的業(yè)務(wù)類--><beanid="testbean"class="com.test.MyTest"/><!--注入spring容器的請求代理對象--><beanid="mybeanproxy"class="org.springframework.aop.framework.ProxyFactoryBean"><!--注入業(yè)務(wù)接口--><propertyname="proxyInterfaces"><value>com.test.ITest</value></property><!--指定代理的目標(biāo)實現(xiàn)--><propertyname="target"><reflocal="testbean"/></property><!--制定中斷請求的名稱--><propertyname="interceptorNames"><value>mypointrequest</value></property></bean>客戶端測試代碼客戶端測試代碼ApplicationContextctx=new FileSystemXmlApplicationContext("D:\\prjspringao p\\WebRoot\\WEB-INF\\spring.xml");ITestts=(ITest)ctx.getBean("mybeanproxy");System.out.println(ts.execute("sss"));
輸出的結(jié)果如下:
===================================中斷請求開始執(zhí)行......5秒以后處理業(yè)務(wù)邏輯......========中斷處理調(diào)用======主業(yè)務(wù)方法正在執(zhí)行.....中斷處理邏輯處理完成......處理相關(guān)的日志信息......打印相關(guān)的消息......中斷請求執(zhí)行完成......===============================主業(yè)務(wù)方法返回的結(jié)果---->sssspring中AOP的三種代理方式—自動代理<beanid="empdao"class="com.bean.EmpDao"/><!--設(shè)定自動代理類--><beanid="mypoxy"class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"><propertyname="beanNames"><list><value>*Dao</value></list></property></bean>代理所有以Dao結(jié)尾的類測試代碼String path=UseProxyFactorBean.class.getClass().getReso urce("/").getPath();ApplicationContextctx=newFileSystemXmlApplicationContext(path+"/sping2.xml");DaoInterfacefactorybean=(DaoInterface)ctx.getBean("empdao");factorybean.del("ss");Spring中的事務(wù)管理器Spring從不同的事務(wù)管理API中抽象了一整套的事務(wù)機制.開發(fā)人員不必了解底層的事務(wù)API,就可以利用這些事務(wù)機制.有了這些事務(wù)機制,事務(wù)管理代碼就能獨立于特定的事務(wù)技術(shù)了.Spring的核心事務(wù)管理抽象是它為事務(wù)管理封裝了一組獨立于技術(shù)的方法.無論使用Spring的哪種事務(wù)管理策略(編程式或聲明式),事務(wù)管理器都是必須的.Spring中的事務(wù)管理器的不同實現(xiàn)
:在應(yīng)用程序中只需要處理一個數(shù)據(jù)源,而且通過JDBC存取
:在JavaEE應(yīng)用服務(wù)器上用JTA(JavaTransactionAPI)進行事務(wù)管理:用Hibernate框架存取數(shù)據(jù)庫……事務(wù)管理器以普通的Bean形式聲明在SpringIOC容器中需求數(shù)據(jù)表中的數(shù)據(jù)Account表Book表Book_STOCK表用事務(wù)通知聲明式地管理事務(wù)事務(wù)管理是一種橫切關(guān)注點為了在Spring2.x中啟用聲明式事務(wù)管理,可以通過txSchema中定義的<tx:advice>元素聲明事務(wù)通知,為此必須事先將這個Schema定義添加到<beans>根元素中去.聲明了事務(wù)通知后,就需要將它與切入點關(guān)聯(lián)起來.由于事務(wù)通知是在<aop:config>元素外部聲明的,所以它無法直接與切入點產(chǎn)生關(guān)聯(lián).所以必須在<aop:config>元素中聲明一個增強器通知與切入點關(guān)聯(lián)起來.由于SpringAOP是基于代理的方法,所以只能增強公共方法.因此,只有公有方法才能通過SpringAOP進行事務(wù)管理.在spring2.5配置文件中引入用于聲明事務(wù)的tx命名空<beansxmlns=""xmlns:xsi=""xmlns:aop=""xmlns:context=""xmlns:tx=""xsi:schemaLocation="/spring-beans-2.5.xsd/spring-tx-2.5.xsd/spring-aop-2.5.xsd/spring-context-2.5.xsd"></beans>用事務(wù)通知聲明式地管理事務(wù)示例代碼聲明事務(wù)管理器聲明事務(wù)通知聲明事務(wù)通知需要通知方法(即需要進行事務(wù)管理的方法)用@Transactional注解聲明式地管理事務(wù)除了在帶有切入點,通知和增強器的Bean配置文件中聲明事務(wù)外,Spring還允許簡單地用@Transactional注解來標(biāo)注事務(wù)方法.為了將方法定義為支持事務(wù)處理的,可以為方法添加@Transactional注解.根據(jù)SpringAOP基于代理機制,只能標(biāo)注公有方法.可以在方法或者類級別上添加@Transactional注解.當(dāng)把這個注解應(yīng)用到類上時,這個類中的所有公共方法都會被定義成支持事務(wù)處理的.在Bean配置文件中只需要啟用<tx:annotation-driven>
元素,并為之指定事務(wù)管理器就可以了.如果事務(wù)處理器的名稱是transactionManager,就可以在<tx:annotation-driven>元素中省略transaction-manager屬性.這個元素會自動檢測該名稱的事務(wù)處理器.用@Transactional注解聲明式地管理事務(wù)配置文件示例代碼事務(wù)傳播屬性當(dāng)事務(wù)方法被另一個方法調(diào)用時,必須指定事務(wù)應(yīng)該如何傳播.例如:方法可能繼續(xù)在現(xiàn)有事務(wù)中運行,也可能開啟一個新事務(wù),并在自己的事務(wù)中運行.事務(wù)的傳播行為可以由傳播屬性指定.Spring定義了7種傳播行為.Spring支持的事務(wù)傳播行為需求新定義Cashier接口:表示客戶的結(jié)賬操作修改數(shù)據(jù)表信息如下,目的是用戶Tom在結(jié)賬時,余額只能支付第一本書,不夠支付第二本書:REQUIRED傳播行為當(dāng)bookService的purchase()方法被另一個事務(wù)方法checkout()調(diào)用時,它默認會在現(xiàn)有的事務(wù)內(nèi)運行.這個默認的傳播行為就是REQUIRED.因此在checkout()方法的開始和終止邊界內(nèi)只有一個事務(wù).這個事務(wù)只在checkout()方法結(jié)束的時候被提交,結(jié)果用戶一本書都買不了事務(wù)傳播屬性可以在@Transactional注解的propagation屬性中定義Tx1開始Tx1結(jié)束checkout()purchase()purchase()配置數(shù)據(jù)源(mysql)<beanid="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><propertyname="driverClassName"value="org.gjt.mm.mysql.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8"/><propertyname="username"value="root"/><propertyname="password"value="123456"/><!--連接池啟動時的初始值--> <propertyname="initialSize"value="1"/> <!--連接池的最大值--> <propertyname="maxActive"value="500"/> <!--最大空閑值.當(dāng)經(jīng)過一個高峰時間后,連接池可以慢慢將已經(jīng)用不到的連接慢慢釋放一部分,一直減少到maxIdle為止--> <propertyname="maxIdle"value="2"/> <!--最小空閑值.當(dāng)空閑的連接數(shù)少于閥值時,連接池就會預(yù)申請去一些連接,以免洪峰來時來不及申請--> <propertyname="minIdle"value="1"/></bean>使用<context:property-placeholderlocation=“perties”/>屬性占位符使用屬性占位符方式配置數(shù)據(jù)源<context:property-placeholderlocation=“perties”/><beanid="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><propertyname="driverClassName"value="${driverClassName}"/><propertyname="url"value="${url}"/><propertyname="username"value="${username}"/><propertyname="password"value="${password}"/><!--連接池啟動時的初始值--> <propertyname="initialSize"value="${initialSize}"/> <!--連接池的最大值--> <propertyname="maxActive"value="${maxActive}"/> <!--最大空閑值.當(dāng)經(jīng)過一個高峰時間后,連接池可以慢慢將已經(jīng)用不到的連接慢慢釋放一部分,一直減少到maxIdle為止--> <propertyname="maxIdle"value="${maxIdle}"/> <!--最小空閑值.當(dāng)空閑的連接數(shù)少于閥值時,連接池就會預(yù)申請去一些連接,以免洪峰來時來不及申請--> <propertyname="minIdle"value="${minIdle}"/></bean>采用注解方式配置事務(wù)采用注解方式<beanid="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <propertyname="dataSource"ref="dataSource"/>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級上冊數(shù)學(xué)教案 - 5.3 分餅 北師大版
- 2025年租憑合同延期申請書模板
- 五年級下冊數(shù)學(xué)教案-練習(xí)一 北師大版
- 三年級上冊語文部編版期中測試卷(含答案)
- 2024年水電站計算機監(jiān)控裝置項目資金申請報告代可行性研究報告
- 2025年濟南工程職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫含答案
- 《7 秋季星空》 教學(xué)設(shè)計-2023-2024學(xué)年科學(xué)六年級上冊青島版
- 我為爸爸慶祝父親節(jié)教案教學(xué)設(shè)計
- 2025年廣東省建筑安全員-A證考試題庫附答案
- 2025年桂林信息工程職業(yè)學(xué)院單招職業(yè)傾向性測試題庫帶答案
- CT報告單模板
- 吹灰器檢修三措兩案
- 足球比賽計分表(共6頁)
- 軸承專用中英文對照表 (完整版)
- 了解現(xiàn)代漢字字義的特點根據(jù)形旁的表義ppt課件
- 人教版小學(xué)數(shù)學(xué)四年級下冊教材分析ppt課件
- 嵩晟富氫水銷售方案ppt課件
- 貴人登天門吉時速查表(精編版)
- 廣州正佳廣場平面圖1880414120.ppt
- 藥物療法和過敏試驗法護理學(xué)基礎(chǔ)
- 物流運籌學(xué)課程標(biāo)準(zhǔn)
評論
0/150
提交評論