




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaWeb編程技術(shù)本章首先介紹Spring框架的基本概念,然后重點(diǎn)介紹Spring的Ioc容器、依賴注入概念和Bean的配置與實(shí)例化。Spring框架簡(jiǎn)介Spring容器的概念依賴注入的概念bean的配置與實(shí)例化第9章Spring快速入門Spring是目前最流行的輕量級(jí)Java企業(yè)開(kāi)發(fā)框架,它是為解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。該框架以強(qiáng)大的功能和卓越的性能受到了眾多開(kāi)發(fā)人員的喜愛(ài)。Spring框架簡(jiǎn)介Spring框架1.0版于2004年3月發(fā)布。在過(guò)去的近20年中,Spring框架一直不斷發(fā)展,目前已成為Java領(lǐng)域中開(kāi)發(fā)企業(yè)應(yīng)用程序的首選框架。9.1.1Spring框架模塊9.1.2添加Spring依賴模塊9.1Spring框架模塊9.1.1Spring框架是高度模塊化的,它包含20多個(gè)不同的模塊。Spring框架模塊提供了Spring反轉(zhuǎn)控制容器、依賴注入(DI)、WebMVC框架、AOP等核心特性。圖9-1列出了Spring框架的主要模塊。Spring框架模塊9.1.1Spring框架的所有模塊都用jar文件存儲(chǔ),如果需要特定的技術(shù),可以將它們包含在類路徑中。表9-1列出了Spring框架的主要模塊,并簡(jiǎn)要描述了每個(gè)模塊的內(nèi)容和用于依賴項(xiàng)管理的構(gòu)件名稱。實(shí)際jar文件的名稱可能不同,這取決于如何獲取模塊。模塊組描述CoreContainerspring-core和spring-beans模塊提供了Spring的DI功能和IoC容器實(shí)現(xiàn)。spring-expressions模塊為在Spring應(yīng)用中通過(guò)Spring表達(dá)式語(yǔ)言配置應(yīng)用程序?qū)ο筇峁┝酥С諨ataAccess/Integrationspring-jdbc模塊簡(jiǎn)化用JDBC與數(shù)據(jù)庫(kù)的交互,spring-orm模塊提供了與ORM(對(duì)象關(guān)系映射)框架的集成,如JPA和Hibernate。spring-jms模塊簡(jiǎn)化了與JMS提供者的交互AOP和Instrumentation包含支持AOP(面向切面編程)的類和工具模塊。spring-aop模塊提供Spring的AOP功能,spring-instrument模塊提供了類工具的支持Web/Remotingspring-web和spring-webmvc模塊是用于開(kāi)發(fā)Web應(yīng)用和RESTful的Web服務(wù)。spring-webflux為Web應(yīng)用開(kāi)發(fā)帶來(lái)了反應(yīng)式編程能力Test包含spring-test模塊,簡(jiǎn)化了創(chuàng)建單元和集成測(cè)試添加Spring依賴模塊9.1.2有兩種方式使用Spring框架,一種方法是使用Maven構(gòu)建應(yīng)用程序,可以在其pom.xml文件中添加所依賴的模塊,項(xiàng)目將自動(dòng)下載Spring框架的模塊,如下所示。<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.2</version></dependency>添加Spring依賴模塊9.1.2使用Maven構(gòu)建工具的一個(gè)好處是,下載一個(gè)Spring模塊,會(huì)自動(dòng)下載它所依賴的模塊。比如,若在pom.xml文件中添加了spring-context模塊,Maven將自動(dòng)下載spring-aop、spring-benas、spring-core、spring-jcl和spring-expressions等模塊。這幾個(gè)模塊是開(kāi)發(fā)Spring應(yīng)用的基礎(chǔ)。如果需要開(kāi)發(fā)Web應(yīng)用程序,應(yīng)該添加spring-webmvc模塊,如下所示。<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.2</version></dependency>Spring容器與依賴注入9.2Spring容器和依賴注入是Spring框架的兩個(gè)最基本概念,下面我們介紹這兩個(gè)概念。9.2.1Spring容器9.2.2依賴注入9.2.3Spring配置文件9.2.4一個(gè)簡(jiǎn)單的Spring程序9.2.5依賴注入實(shí)現(xiàn)方式Spring容器9.2.1
任何應(yīng)用程序都是由很多組件組成的,每個(gè)組件負(fù)責(zé)整個(gè)應(yīng)用功能的一部分,這些組件需要與其他的應(yīng)用元素進(jìn)行協(xié)調(diào)以完成自己的任務(wù)。當(dāng)應(yīng)用程序運(yùn)行時(shí),需要以某種方式創(chuàng)建并引入這些組件。Spring的核心是提供了一個(gè)容器(container),通常稱為應(yīng)用上下文(applicationcontext),它負(fù)責(zé)創(chuàng)建和管理應(yīng)用中所有組件。Spring容器中管理的對(duì)象稱為bean。Spring容器在啟動(dòng)時(shí)通過(guò)讀取配置文件(applicationContext.xml)中信息構(gòu)建所有組件對(duì)象。容器將這些組件裝配到一起,從而形成一個(gè)完整的程序。就像一所房子,由磚瓦、木料、水泥等組成一樣。Spring容器9.2.1將組件裝配在一起,是通過(guò)一種基于依賴注入的模式實(shí)現(xiàn)的。依賴注入是Spring框架的核心機(jī)制,它提供了框架的重要功能,包括依賴注入和bean的生命周期管理功能。圖9-2給出了Spring容器中組件管理和依賴注入的示意圖。Spring容器9.2.1
要在Spring中實(shí)現(xiàn)依賴注入,需要一個(gè)容器。在Spring中,它是ApplicationContext接口的一個(gè)實(shí)例。Spring提供了幾種不同的ApplicationContext實(shí)現(xiàn)。其中,ClassPathXmlApplicationContext,從類加載路徑下的XML文件中獲取上下文定義信息。FileSystemXmlApplicationContext,從文件系統(tǒng)的XML文件中獲取上下文定義信息。XmlWebApplicationContext,從Web系統(tǒng)中的XML文件中獲取上下文定義信息。AnnotationConfigApplicationContext,就需使用Java配置。下面代碼創(chuàng)建一個(gè)ClassPathXmlApplicationContext容器對(duì)象,它從類加載路徑下的配置文件中獲取上下文信息。StringxmlPath="src/main/webapp//WEB-INF/applicationContext.xml";ApplicationContextcontext=
newClassPathXmlApplicationContext(xmlPath);依賴注入9.2.2
依賴注入是Spring框架的核心特征,其主要目的是降低程序?qū)ο笾g的耦合度。Java應(yīng)用程序通常包括多個(gè)相互協(xié)作對(duì)象,這些對(duì)象相互依賴。
在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,當(dāng)某個(gè)Java實(shí)例(調(diào)用者)需要另一個(gè)Java實(shí)例(被調(diào)用者)時(shí),通常由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例。
在依賴注入模式下,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者完成,而是由Spring容器來(lái)完成,然后注入給調(diào)用者,這稱為依賴注入(DependencyInjection,簡(jiǎn)稱DI)。
假設(shè)開(kāi)發(fā)一個(gè)航班管理應(yīng)用程序,其中包含Passenger(乘客)和Country(國(guó)家)兩個(gè)實(shí)體。每位乘客都來(lái)自一個(gè)國(guó)家,一個(gè)Passenger對(duì)象就依賴于一個(gè)Country對(duì)象(見(jiàn)圖9-3)。在清單9.1和9.2中直接初始化了這個(gè)依賴項(xiàng)。Country.java清單9.1publicclassCountry{ privateStringname; privateStringcodeName; publicCountry(Stringname,StringcodeName){ =name; this.codeName=codeName; } publicStringgetName(){ returnname; } publicStringgetCodeName(){ returncodeName; }}Passenger.java清單9.2publicclassPassenger{privateStringname;privateCountrycountry;publicPassenger(Stringname){=name;this.country=newCountry("中國(guó)","CHN");}publicStringgetName(){returnname;}publicCountrygetCountry(){returncountry;}}依賴注入9.2.2
為Passenger類定義了一個(gè)name字段和它的getter方法,定義一個(gè)country字段和它的getter方法。創(chuàng)建一個(gè)構(gòu)造方法初始化name和country字段。在Passenger的構(gòu)造方法中,創(chuàng)建并初始化了國(guó)家對(duì)象,這表明國(guó)家和乘客之間存在緊耦合。這種方法的缺點(diǎn)是:Passenger類直接依賴Country類,Passenger類和Country類也不可能分開(kāi)測(cè)試。
正是由于這些缺點(diǎn),就產(chǎn)生了一個(gè)新的方法:依賴注入。使用依賴項(xiàng)注入方法,對(duì)象被添加到容器中,容器在創(chuàng)建對(duì)象時(shí)注入依賴項(xiàng)。這一過(guò)程基本上與傳統(tǒng)的過(guò)程相反,因此也被稱為控制反轉(zhuǎn)(inversionofcontrol)。其基本思想是消除應(yīng)用程序組件對(duì)某個(gè)實(shí)現(xiàn)的依賴,并將類實(shí)例化的控制權(quán)限委托給容器。對(duì)上面示例,要消除對(duì)象之間的直接依賴關(guān)系,可重寫Passenger類,如清單9.3所示。修改后的Passenger.java清單9.3publicclassPassenger{privateStringname;privateCountrycountry;publicPassenger(Stringname){=name;}publicStringgetName(){returnname;}publicCountrygetCountry(){returncountry;}publicvoidsetCountry(Countrycountry){this.country=country;}}Spring配置文件9.2.3Spring從1.0版本開(kāi)始,就支持基于XML的配置文件,從2.5版本開(kāi)始,增加了使用注解的配置。下面是Spring的配置文件的基本框架。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-4.3.xsd">…</beans>配置文件的根元素是<beans>,其中可包含其他元素,比如最重要的是使用<bean>元素對(duì)容器管理的bean對(duì)象進(jìn)行配置。如果需要更強(qiáng)的Spring配置能力,可以在schemaLocation屬性中添加相應(yīng)的schema。一個(gè)簡(jiǎn)單的Spring程序9.2.4
接下來(lái)通過(guò)一個(gè)示例來(lái)演示IoC容器的使用。(1)在IDEA中創(chuàng)建名為chapter09的JakartaEE項(xiàng)目,在pom.xml文件中添加Spring框架所需的依賴項(xiàng),如下所示。<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>一個(gè)簡(jiǎn)單的Spring程序9.2.4(2)在src/main/java目錄中創(chuàng)建com.boda.xy包,在該包中創(chuàng)建Country類和Passenger類。這里使用清單9.1和清單9.3的類。(3)在src/main/resources目錄中創(chuàng)建Spring配置文件applicationContext.xml,配置文件名可以自定義,如清單9.4所示。applicationContext.xml清單9.4<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"><beanid="country"class="com.boda.xy.Country"><constructor-argname="name"value="中國(guó)"/><constructor-argname="codeName"value="CHN"/></bean><beanid="passenger"class="com.boda.xy.Passenger"><constructor-argname="name"value="張大海"/><propertyname="country"ref="country"/></bean></beans>FlightSystemTest.java清單9.5publicclassFlightSystemTest{@TestpublicvoidtestPassenger(){StringxmlPath="src/main/webapp//WEB-INF/applicationContext.xml";ApplicationContextcontext=newFileSystemXmlApplicationContext(xmlPath);Passengerpassenger=(Passenger)context.getBean("passenger");System.out.println(passenger.getName());System.out.println(passenger.getCountry().getName());}}(4)在src\test\java中創(chuàng)建com.boda.xy.FlightTest測(cè)試類,并在該類中創(chuàng)建一個(gè)名為testPassenger()方法,如清單9.5所示。
在測(cè)試類的testPassenger()方法中,首先定義了配置文件的路徑,然后加載配置文件創(chuàng)建Spring容器,并通過(guò)容器獲取一個(gè)Passenger對(duì)象,最后在控制臺(tái)將它們打印出來(lái)。
要在IDEA中運(yùn)行測(cè)試方法,在編輯窗口中單擊testPassenger()方法左側(cè)小三角,在彈出菜單中選擇RuntestPassenger()命令。使用JUnit測(cè)試testPassenger()方法,控制臺(tái)輸出結(jié)果如圖9-4所示。依賴注入實(shí)現(xiàn)方式9.2.5
在Spring中,通過(guò)依賴注入的方式調(diào)用者只需完成較少的工作。當(dāng)調(diào)用者乘客需要一個(gè)國(guó)家對(duì)象時(shí),可以由Spring容器來(lái)創(chuàng)建該國(guó)家對(duì)象并將其注入到調(diào)用對(duì)象中。Spring的依賴注入主要有兩種方式實(shí)現(xiàn):設(shè)值注入。Spring容器使用屬性的setter方法來(lái)注入被依賴的實(shí)例。構(gòu)造注入。Spring容器使用構(gòu)造方法來(lái)注入被依賴的實(shí)例。1.用設(shè)值依賴注入
設(shè)值依賴注入是指Spring容器通過(guò)調(diào)用者類的setter方法把所依賴的實(shí)例注入。例如在ProductController類中定義一個(gè)ProductService類型的成員,然后定義一個(gè)setter方法就可以注入ProductService對(duì)象。ProductController.java清單9.6publicclassProductController{privateProductServiceproductService;publicProductController(){}//定義setter方法注入一個(gè)ProductService實(shí)例publicvoidsetProductService(ProductServiceproductService){ductService=productService;}publicintaddProduct(Productproduct){productService.addProduct(product);}}這里,不是在ProductController類的構(gòu)造方法中創(chuàng)建ProductService實(shí)例,而是定義一個(gè)setter方法,通過(guò)該方法注入一個(gè)ProductService實(shí)例,而這個(gè)實(shí)例是由Spring容器創(chuàng)建的。在Spring項(xiàng)目的src/applicationContext.xml配置文件中添加bean的定義,對(duì)設(shè)值注入的屬性使用<property>元素配置,下面文件配置了controller和service兩個(gè)bean,代碼如下。<beanid="service"class="com.boda.service.ProductService"></bean><beanid="controller"class="com.boda.controller.ProductController"><propertyname="productServie"ref="service"></property></bean>這里首先配置了ProductService類的一個(gè)bean實(shí)例,然后在配置ProductController類的productService屬性時(shí),使用了<property>元素的ref屬性引用ProductService類的一個(gè)實(shí)例。ProductService類的bean由service配置。依賴注入實(shí)現(xiàn)方式9.2.5
2.用構(gòu)造方法依賴注入構(gòu)造方法注入是指Spring容器通過(guò)調(diào)用者類的構(gòu)造方法把所依賴的實(shí)例注入。基于構(gòu)造方法的注入需要為調(diào)用者類定義帶參數(shù)的構(gòu)造方法實(shí)現(xiàn),每個(gè)參數(shù)代表一個(gè)依賴。例如,在ProductController類中可以定義構(gòu)造方法,如清單9.7所示。ProductController.java清單9.7publicclassProductController{privateProductServiceproductService;//定義構(gòu)造方法注入ProductService的一個(gè)實(shí)例publicProductController(ProductServiceproductService){ductService=productService;}publicintaddProduct(Productproduct){productService.addProduct(product);}}這里,為ProductController類定義一個(gè)構(gòu)造方法,將ProductService的一個(gè)實(shí)例作為構(gòu)造方法的一個(gè)參數(shù)注入。在Spring配置文件applicationContext.xml中,對(duì)構(gòu)造注入的屬性使用<constructor-arg>元素配置,下面文件配置了ProductController和ProductService兩個(gè)bean,代碼如下。<beanid="service"class="com.boda.service.ProductService"></bean><beanid="controller"class="com.boda.controller.ProductController"><!--為controller對(duì)象構(gòu)造方法注入service對(duì)象--><constructor-argref="service"/>
</bean>
設(shè)值注入和構(gòu)造方法注入是目前主流的依賴注入實(shí)現(xiàn)方式,這兩種方法各有優(yōu)點(diǎn),也各有缺點(diǎn)。Spring框架對(duì)這兩種依賴注入方法都提供了良好的支持,這也為開(kāi)發(fā)人員提供了更多的選擇。
那么在使用Spring開(kāi)發(fā)應(yīng)用程序時(shí)應(yīng)該選擇哪一種注入方式呢?
就一般項(xiàng)目開(kāi)發(fā)來(lái)說(shuō),應(yīng)該以設(shè)值注入為主,輔之以構(gòu)造方法注入作為補(bǔ)充,可以達(dá)到最佳的開(kāi)發(fā)效率。bean的配置與實(shí)例化9.3可以把Spring容器看做是一個(gè)用于生產(chǎn)和管理bean大型工廠。要使用這個(gè)工廠生產(chǎn)和管理bean,需要開(kāi)發(fā)者在配置文件中配置bean。Spring容器一般使用XML配置文件注冊(cè)并管理bean之間的依賴關(guān)系。XML配置文件的根元素是<beans>,其中包含多個(gè)<bean>子元素,每個(gè)<bean>子元素定義一個(gè)bean,并描述該bean如何被裝配到Spring容器中。<bean>元素可包含多個(gè)屬性和一些子元素,具體如表9-2所示。構(gòu)造方法初始化9.3.1Spring容器可以調(diào)用bean類的無(wú)參數(shù)或有參數(shù)構(gòu)造方法實(shí)例化bean,這種方式稱為構(gòu)造方法實(shí)例化。下面代碼就是調(diào)用ProductService類的無(wú)參數(shù)構(gòu)造方法創(chuàng)建bean實(shí)例。<beanid="service"class="com.boda.service.ProductService"></bean>向構(gòu)造方法傳遞參數(shù)9.3.2Spring支持通過(guò)帶參數(shù)的構(gòu)造方法初始化類。假設(shè)Employee類定義了如下構(gòu)造方法:下面的bean定義使用<constructor-arg>子元素通過(guò)參數(shù)名指定傳遞給構(gòu)造方法的參數(shù)值。publicEmployee(Stringname,intage){=name;this.age=age;}<beanid="employee"class="com.boda.xy.Employee"><constructor-argname="name"value="張大海"/><constructor-argname="age"value="20"/></bean>除通過(guò)名稱傳遞參數(shù)外,Spring還支持通過(guò)索引的方式傳遞參數(shù),第一個(gè)參數(shù)的索引值為0,第二個(gè)參數(shù)索引值為1,以此類推。具體如下。<beanid="employee"class="org.bu.xxxy.Employee"><constructor-argindex="0"value="張大海"/><constructor-argindex="1"value="20"/></bean>需要說(shuō)明的是,采用這種方式,必須傳遞對(duì)應(yīng)構(gòu)造方法的所有參數(shù),缺一不可。靜態(tài)工廠實(shí)例化9.3.3Spring還支持通過(guò)調(diào)用類的一個(gè)工廠方法來(lái)初始化類。下面代碼創(chuàng)建一個(gè)工廠類RobotFactory,該類中定義一個(gè)靜態(tài)方法createRobot()用來(lái)實(shí)例化Robot對(duì)象,代碼如下。在配置文件applicationContext.xml文件中添加配置代碼。下面的bean定義展示了通過(guò)工廠方法來(lái)實(shí)例化com.boda.xy.Robot。publicclassRobotFactory{publicstaticRobotcreateRobot(){returnnewRobot("教師機(jī)器人");}}<beanname="robot"class="com.boda.RobotFactory"
factory-method="createRobot"/>使用下面代碼返回配置的Robot實(shí)例。StringxmlPath="applicationContext.xml";ApplicationContextcontext=newClassPathXmlApplicationContext(xmlPath);Robotrobot=(Robot)context.getBean("robot");System.out.println(robot.getName());實(shí)例工廠實(shí)例化9.3.4在使用實(shí)例工廠實(shí)例化bean時(shí),要求在開(kāi)發(fā)者在工廠類中創(chuàng)建一個(gè)實(shí)例方法來(lái)創(chuàng)建bean的實(shí)例。在配置bean時(shí)需要使用factory-bean屬性指定配置的工廠,同時(shí)還需要使用factory-method屬性指定實(shí)例工廠中的實(shí)例方法。下面創(chuàng)建一個(gè)工廠類RobotFactory,該類中定義一個(gè)實(shí)例方法createRobot()用來(lái)實(shí)例化Robot對(duì)象,代碼如下。publicclassRobotFactory{publicRobotcreateRobot(){returnnewRobot("教師機(jī)器人");;}}實(shí)例工廠實(shí)例化9.3.4在applicationContext.xml配置文件中添加配置代碼。下面的bean定義展示了通過(guò)實(shí)例工廠方法來(lái)實(shí)例化com.boda.Robot。該例中使用facory-bean屬性指定實(shí)例工廠,使用facory-method屬性指定實(shí)例方法。下面是測(cè)試代碼:<beanname="robotFactory"class="com.boda.RobotFactory"/><beanname="robot"factory-bean="robotFactory"factory-method="createRobot"/>StringxmlPath="applicationContext.xml";ApplicationContextcontext=newClassPathXmlApplicationContext(xmlPath);Robotrobot=(Robot)context.getBean("robot");System.out.println(robot.getName());銷毀方法的使用9.3.5有時(shí),希望類在銷毀之前執(zhí)行某些操作,這可以在bean定義中使用destroy-method屬性,來(lái)指定在bean銷毀前要被執(zhí)行的方法。下例bean定義通過(guò)java.util.concurrent.Executors的newCachedThreadPool()靜態(tài)方法創(chuàng)建一個(gè)java.util.concurrent.ExecutorService實(shí)例,通過(guò)destroy-method屬性指定銷毀方法shutdown()。這樣,Spring會(huì)在銷毀ExecutorService實(shí)例前,調(diào)用其shutdown()方法。<beanid="executorService"class="java.util.concurrent.Executors"factory-method="newCachedThreadPool"
destroy-method="shutdown"/>bean的裝配方式9.4bean的裝配可以理解為如何在Spring容器中創(chuàng)建bean及注入依賴關(guān)系,bean的裝配方式即bean依賴注入的方式。Spring容器支持多種形式的裝配方式,包括基于XML的裝配、基于注解的裝配和基于Java代碼的裝配。9.4.1基于XML的裝配9.4.2基于注解的裝配基于XML的裝配9.4.1
基于XML的裝配是指在Spring的配置文件中聲明bean以及依賴注入。9.2節(jié)中介紹的依賴注入就是屬于這種方式。
使用XML配置文件有兩種依賴注入方式:構(gòu)造注入和設(shè)值注入。使用設(shè)值注入時(shí),在Spring的配置文件中,需要使用<bean>元素的<property>子元素為每個(gè)子元素注入值。設(shè)值注入要求bean類必須滿足以下兩點(diǎn)要求:bean類必須提供一個(gè)默認(rèn)的構(gòu)造方法。bean類必須為需要注入的屬性提供對(duì)應(yīng)的setter方法。對(duì)于使用構(gòu)造注入時(shí),在Spring的配置文件中,需要使用<bean>元素的<constructor-arg>子元素類定義構(gòu)造方法的參數(shù),可以使用其value屬性或子元素設(shè)置參數(shù)值。構(gòu)造注入要求bean類必須提供帶參數(shù)的構(gòu)造
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離職員工離職協(xié)議書及離職金支付保障協(xié)議
- 08 任務(wù)三 新聞寫作2024-2025學(xué)年八年級(jí)語(yǔ)文上冊(cè)同步教學(xué)設(shè)計(jì)(河北專版)
- 二零二五年度文化產(chǎn)業(yè)股權(quán)質(zhì)押融資合同
- 二零二五年度供應(yīng)鏈融資擔(dān)保免責(zé)協(xié)議
- 二零二五年度實(shí)習(xí)生就業(yè)實(shí)習(xí)信息保密協(xié)議書
- 二零二五年度教育行業(yè)提前解除勞動(dòng)合同協(xié)議書
- 二零二五年度醫(yī)院合同制員工薪酬體系與福利保障合同
- 第二單元《 參考活動(dòng)2 做出正確的決定》教學(xué)設(shè)計(jì) -2024-2025學(xué)年初中綜合實(shí)踐活動(dòng)蘇少版八年級(jí)上冊(cè)
- 二零二五年度夫妻雙方贍養(yǎng)父母責(zé)任分擔(dān)書
- 《家鄉(xiāng)文化生活現(xiàn)狀調(diào)查》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 2022年全國(guó)新高考Ⅰ卷:馮至《江上》
- 體能訓(xùn)練概論(NSCA)
- 青島版三年級(jí)數(shù)學(xué)下冊(cè)《美麗的街景》教學(xué)課件7
- 銅陵油庫(kù)重油罐區(qū)工藝設(shè)計(jì)
- 液壓傳動(dòng)全套ppt課件(完整版)
- 質(zhì)量手冊(cè)CCC認(rèn)證完整
- DB51∕T 2767-2021 安全生產(chǎn)風(fēng)險(xiǎn)分級(jí)管控體系通則
- 反興奮劑考試試題與解析
- 低壓電氣安全知識(shí)培訓(xùn)課件(35張PPT)
- 電子支氣管鏡檢查、清洗消毒保養(yǎng)及注意事項(xiàng)解讀
- 建筑工程材料取樣及收費(fèi)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論