版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SpringBoot一、Spring 介绍1.1、SpringBoot 简介在您第 1 次接触和学习 Spring 框架的时候,是否因为其繁杂的配置而退却了?在你第 n 次使用 Spring 框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用 Spring Boot 来让你更易上手,更简单快捷地构建Spring 应用!Spring Boot 让的 Spring 应用变的更轻量化。比如:你可以仅仅依靠一个 Java 类来运行一个 Spring。你也可以打包你的应用为 jar 并通过使用 java -jar 来运行你的 Spring Web 应用。Spring Boot 的主
2、要优点:为所有Spring 开发者更快的入门开箱即用,提供各种默认配置来简化项目配置内嵌式容器简化Web 项目没有冗余代码生成和XML 配置的要求本章主要目标完成 Spring Boot 基础项目的构建,并且实现一个简单的 Http 请求处理,通过这个例子对Spring Boot 有一个初步的了解,并体验其结构简单、开发快速的特性。SpringBoot 是一个快速开发的框架,能够快速的整合第框架,简化 XML 配置,全部采用注解形式,内置 Tomcat 容器,帮助开发者能够实现快速开发,SpringBoot 的 Web 组件 默认集成的是 SpringMVC 框架。SpringMVC 是控制层
3、。1.2、系统要求:Java1.8 及以上Spring Framework 4.1.5 及以上本文采用 Java 1.8.0_73、Spring Boot 2.0 版本调试通过。1.3、SpringBoot 和 SpringMVC 区别SpringBoot 是一个快速开发的框架,能够快速的整合第框架,简化 XML 配置,全部采用注解形式,内置 Tomcat 容器,帮助开发者能够实现快速开发,SpringBoot 的 Web 组件 默认集成的是 SpringMVC 框架。SpringMVC 是控制层。1.4、SpringBoot 和 SpringCloud 区别SpringBoot 是一个快速开
4、发的框架,能够快速的整合第框架,简化 XML 配置,全部采用注解形式,内置 Tomcat 容器,帮助开发者能够实现快速开发,SpringBoot 的 Web 组件 默认集成的是 SpringMVC 框架。SpringMVC 是控制层。SpringCloud 依赖与 SpringBoot 组件,使用 SpringMVC 编写 Http 协议接口,同时 SpringCloud 是一套完整的微服务解决框架。1.5 常见错误EclipseSpringBoot2.0 以上版本,pom 文件报错解决办法.apache.maven.archiver.MavenArchiver.getManifest(.ap
5、ache.maven.archiver.MavenArchiveConfiguration).ject.MavenProject,相关: http:/article/1527749194015二、快速入门2.1、创建一个 Maven 工程名为”springboot-oworld” 类型为Jar 工程项目2.2、pom 文件引入依赖2.3、编写oWorld 服务创建 package 命名为com.itmayiedu.controller(根据实际情况修改)创建oController 类,内容如下RestController EnableAutoConfiguration public class
6、oController RequestMap(/o) public String index() return o World;public sic void main(String args) SpringApplication.run(oController.class, args);.springframework.bootspring-boot-startarent2.0.0.RELEASE.springframework.bootspring-boot-starter-webspring-boot-startarent 作用在 pom.xml 中引入 spring-boot-star
7、t-parent,spring的解释叫什么 soms,它可以提供 dependency management,也就是说依赖管理,引入以后在其它 dependency 的时候就不需要 ver了,后面可以看到。spring-boot-starter-web 作用springweb组件spring-boot-maven-plugin 作用如果要直接 Main 启动 spring,那么以下 plugin 必须要添加,否则是无法启动的。如果使用 maven 的 spring-boot:run 的话是不需要此配置的。(我在测试的时候,如果不配置下面的 plugin 也是直接在 Main 中运行的。)2.4
8、、RestController在上加上 RestController 表示修饰该 Controller 所有的方法返回 JSON 格式,直接可以编写Restful 接口2.5、EnableAutoConfiguration注解:作用在于让 Spring Boot 根据应用所的依赖来对 Spring 框架进行自动配置这个注解告诉 Spring Boot 根据添加的 jar 依赖猜测你想如何配置 Spring。由于 spring-boot-starter-web添加了 Tomcat 和 Spring MVC,所以 auto-configuration 将假定你正在开发一个web 应用并相应地对Sp
9、ring进行设置。2.6 SpringApplication.run(oController.class, args);标识为启动类2.7、SpringBoot 启动方式 1Springboot 默认端为 8080启动主程序,打开浏览器,可以看到页面输出o World2.8、SpringBoot 启动方式 2ComponentScan(basePackages = com.itmayiedu.controller)-控制器扫包范围ComponentScan(basePackages = com.itmayiedu.controller) EnableAutoConfigurationpubli
10、c class App RestController EnableAutoConfiguration public classoController RequestMap(/o) public String index() return o World;public sic void main(String args) SpringApplication.run(oController.class, args);2.9、SpringBoot 启动方式 3SpringBootApplicationSpringBootApplication 被 Configuration、EnableAutpon
11、entScan 注解所修饰,换言之 Springboot 提供了的注解来替代以上三个注解扫包范围:在启动类上加上SpringBootApplication 注解,当前包下或者子包下所有的类都可以扫到。三、Web 开发3.1、静态资源在开发Web 应用的时候,需要大量的 js、css、等静态资源。默认配置Spring Boot 默认提供静态资源目录位置需置于 classpath 下,目录名需符合如下规则:/sic/public/resour/META-INF/resour举例:尝试可以在 src/main/resour/目录下创建 sic,在该位置放置一个文件。启动程序后,。如能显示,配置成功。
12、3.2、渲染 Web 页面渲染 Web 页面在之前的示例中,都是通过RestController 来处理请求,所以返回的内容为 json 对象。那么如果需要渲染html 页面的时候,要如何实现呢?模板引擎在动态HTML 实现上 Spring Boot 依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,可以很快的上手开发站。Spring Boot 提供了默认配置的模板引擎主要有以下几种:public sic void main(String args) SpringApplication.run(App.class, args);Spring Boot 建议使用这些
13、模板引擎,避免使用 JSP,若一定要使用 JSP 将无法实现 Spring Boot 的多种特性,具体可见后文:支持JSP 的配置当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resour然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。/templates。当3.3、使用 Freemarker 模板引擎渲染 web 视图3.3.1、pom 文件引入:3.3.2、代码在src/main/resour/创建一个templates 文件夹,后缀为*.ftl3.3.3、前台代码RequestMap(/index)public String
14、index(Map map) map.put(name,美丽的天使.);return index;.springframework.bootspring-boot-starter-freemarkerThymeleafFreeMarkerVelocityGroovyMustache3.3.4、Freemarker 其他用法RequestMap(/freemarkerIndex)public String index(Map result) result.put(name, yushengjun); result.put(sex, 0);List listResult = new ArrayLi
15、st(); listResult.add(zhangsan); listResult.add(lisi); listResult.add(itmayiedu); result.put(listResult, listResult);return index;首页$name男女其他$user$name3.3.5、Freemarker 配置新建perties 文件3.4、使用 JSP 渲染 Web 视图3.4.1、pom 文件引入以下依赖.springframework.bootspring-boot-startarent2.0.0.RELEASE.springframework.bootspri
16、ng-boot-starter-web.springframework.bootspring-boot-starter-tomcat#FREEMARKER (FreeMarkerAutoConfiguration) #spring.freemarker.allow-request-override=false spring.freemarker.cache=truespring.freemarker.check-templaocation=true spring.freemarker.charset=UTF-8spring.freemarker.content-type=text/htmlsp
17、ring.freemarker.exe-requestributes=false spring.freemarker.exe-ses-attributes=false spring.freemarker.exe-spring-macro-helpers=false #spring.freemarkrefix=#spring.freemarker.reqontextribute= #spring.freemarker.settings.*=spring.freemarker.suffix=.ftlspring.freemarker.templaoadath=classpath:/template
18、s/ #comma-separated list#spring.freemarker.view-names= # whiist of view namest can be resolved3.4.2、在 perties 创建以下配置3.4.3、代码注意:创建 SpringBoot 整合 JSP,一定要为 war 类型,否则会找不到页面.JSP 页面存放在 resour/ jsp 不能被到Controllerpublic class IndexController RequestMap(/index) public String index() return index;spring.mvc.v
19、iew.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp.apache.tomcat.embedtomcat-embed-jasper3.5、全局捕获异常ExceptionHandler 表示异常四、数据4.1、springboot 整合使用 JdbcTemplate4.1.1 pom 文件引入.springframework.bootspring-boot-startarent2.0.0.RELEASEControllerAdvicepublic class GlobalExceptionHandler ExceptionHandler(Runt
20、imeException.class) ResponseBodypublic Map exceptionHandler() Map map = new HashMap(); map.put(errorCode, 101);map.put(errorMsg, 系統错误!);return map;ControllerAdvice 是 controller 的一个辅助类,最常用的就是作为全局异常处理的切面类ControllerAdvice 可以指定扫描范围ControllerAdvice 约定了几种可行的返回值,如果是直接返回 m类的话,需要使用ResponseBody 进行 json 转换返回 S
21、tring,表示跳到某个 view返回 mAndView返回 m+ ResponseBody4.1.2 perties 新增配置4.1.3 UserService 类Servicepublic claserServiceImpl implements UserService Autowiredprivate JdbcTemplate jdbcTemplate;public void createUser(String name,eger age) jdbcTemplate.update(inserto users values(null,?,?);, name, age);spring.dat
22、asource.url=jdbc:/localhost:3306/test spring.datasource.username=root spring.datasource.password=rootspring.datasource.dri.jdbc.Driver.springframework.bootspring-boot-starter-jdbc-connector-java.springframework.bootspring-boot-starter-testtest.springframework.bootspring-boot-starter-web4.1.4 App 类注意
23、: spring-boot-startarent 要在 1.5 以上4.2、springboot 整合使用 mybatis4.2.1、pom 文件引入.springframework.bootspring-boot-startarent2.0.0.RELEASE.springframework.bootspring-boot-starter.springframework.bootspring-boot-starter-testtest.mybatis.spring.bootmybatis-spring-boot-starter1.1.1ponentScan(basePackages = co
24、m.itmayiedu.controller, com.itmayiedu.service )/EnableAutoConfiguration SpringBootApplication public class App public sic void main(String args) SpringApplication.run(App.class, args);4.2.2、配置文件引入4.2.3、Mapper 代码4.2.4、启动方式ponentScan(basePackages = com.itmayiedu.controller ) MapperScan(com.itmayiedu.m
25、apper)/EnableAutoConfiguration SpringBootApplication public class MybatisApp public sic void main(String args) SpringApplication.run(MybatisApp.class, args);publicerface UserMapper Select(SELECT * FROM USERS WHERE NAME =)User findByName(Param(name) String name);Insert(INSERTO USERS(NAME, AGE) VALUES
26、(, #age)insert(Param(name) String name, Param(age)eger age);spring.datasource.url=jdbc:/localhost:3306/test spring.datasource.username=root spring.datasource.password=rootspring.datasource.dri.jdbc.Driver-connector-java.springframework.bootspring-boot-starter-web4.3、springboot 整合使用 springjpa4.3.1 po
27、m 文件引入依赖4.3.2 创建 User 实体类Entity(name = users)public claser Id GeneratedValue privateeger id;Column(name = name) private String name; Column(name = age) privateeger age;/ get set.springframework.bootspring-boot-startarent2.0.0.RELEASE.springframework.bootspring-boot-starter-data-jpa-connector-java.sp
28、ringframework.bootspring-boot-starter-web4.3.3 创建 User4.3.3 创建 IndexController4.3.4 启动项目EnableJpaReitories(com.itmayiedu.) EntityScan(basePackages = com.itmayiedu.entity) SpringBootApplicationpublic class JpaApp public sic void main(String args) SpringApplication.run(JpaApp.class, args);RestControll
29、erpublic class IndexController Autowiredprivate Useruser;RequestMap(/jpaFindUser)public Object jpaIndex(User user) Optional userOptional = user.findById(user.getId(); User reusltUser = userOptional.get();return reusltUser = null ? 没有查询到数据 : reusltUser;publicerface Userextends JpaReitory 4.4、springbo
30、ot 整合多数据源思考下,在项目中有使用到多数据源吗?原理使用根据包名,加载不同的数据源4.4.1 配置文件中新增两个数据源4.4.2 配置文件中新增两个数据源/DataSource01Configuration /到springboot容器中MapperScan(basePackages = com.itmayiedu.test01, sqlSesFactoryRef = test1SqlSesFactory)public class DataSource1Config /*methodDesc: 功能描述:(配置test1数据库)author:param: returncreateTime
31、:下午3:16:44returnType:return DataSourcecopyright:每特教育科技* */Bean(name = test1DataSource) ConfigurationProperties(prefix = spring.datasource.test1) Primarypublic DataSource testDataSource() return DataSourceBuilder.create().build();#datasource1spring.datasource.test1.driver-claame = com.jdbc.Driverspri
32、ng.datasource.test1.jdbc-url = jdbc:/localhost:3306/test01?useUnicode=true&characterEncoding=utf-8 spring.datasource.test1.username = rootspring.datasource.test1.password = root #datasource2spring.datasource.test2.driver-claame = com.jdbc.Driverspring.datasource.test2.jdbc-url = jdbc:/localhost:3306
33、/test02?useUnicode=true&characterEncoding=utf-8 spring.datasource.test2.username = rootspring.datasource.test2.password = root/*methodDesc: 功能描述:(test1 sql会话工厂)author:param: paramdataSourceparam: returnparam: throwsExceptioncreateTime:下午3:17:08returnType:param dataSourcereturnType:returnreturnType:t
34、hrows Exception SqlSesFactorycopyright:每特教育科技* */Bean(name = test1SqlSesFactory) Primarypublic SqlSesFactory testSqlSesFactory(Qualifier(test1DataSource) DataSource dataSource)throws Exception SqlSesFactoryBean bean = new SqlSesFactoryBean(); bean.setDataSource(dataSource);/ bean.setMapperLocations(
35、/ new/ PathMatchingResourcePatternResolver().getResour(classpath:mybatis/mapper/test1/*.xml);return bean.getObject();/*methodDesc: 功能描述:(test1 事物管理)author:param: paramdataSourceparam: returnparam: throwsExceptioncreateTime:下午3:17:08returnType:param dataSourcereturnType:returnreturnType:throws Except
36、ion SqlSesFactorycopyright:每特教育科技* */Bean(name = test1TranionManager) Primarypublic DataSourceTranionManager testTranionManager(Qualifier(test1DataSource) DataSource dataSource)return new DataSourceTranionManager(dataSource);Bean(name = test1SqlSesTemplate) Primarypublic SqlSesTemplate testSqlSesTem
37、plate(Qualifier(test1SqlSesFactory) SqlSesFactory sqlSesFactory) throws Exception return new SqlSesTemplate(sqlSesFactory);/DataSource2Configuration /到springboot容器中MapperScan(basePackages = com.itmayiedu.test02, sqlSesFactoryRef = test2SqlSesFactory)public class DataSource2Config /*methodDesc: 功能描述:
38、(配置test2数据库)author:param: returncreateTime:下午3:16:44returnType:return DataSourcecopyright:每特教育科技* */Bean(name = test2DataSource) ConfigurationProperties(prefix = spring.datasource.test2) public DataSource testDataSource() return DataSourceBuilder.create().build();/*methodDesc: 功能描述:(test2 sql会话工厂)au
39、thor:param: paramdataSourceparam: returnparam: throwsExceptioncreateTime:下午3:17:08returnType:param dataSourcereturnType:returnreturnType:throws Exception SqlSesFactorycopyright:每特教育科技* */Bean(name = test2SqlSesFactory)public SqlSesFactory testSqlSesFactory(Qualifier(test2DataSource) DataSource dataS
40、ource)throws Exception SqlSesFactoryBean bean = new SqlSesFactoryBean(); bean.setDataSource(dataSource);/ bean.setMapperLocations(/ new/ PathMatchingResourcePatternResolver().getResour(classpath:mybatis/mapper/test2/*.xml);return bean.getObject();/*methodDesc: 功能描述:(test2 事物管理)author:param: paramdat
41、aSourceparam: returnparam: throwsExceptioncreateTime:下午3:17:08returnType:param dataSourcereturnType:returnreturnType:throws Exception SqlSesFactorycopyright:每特教育科技* */Bean(name = test2TranionManager)public DataSourceTranionManager testTranionManager(Qualifier(test2DataSource) DataSource dataSource)r
42、eturn new DataSourceTranionManager(dataSource);4.4.2 创建分包 Mapper4.4.3 多数据源事务注意事项在多数据源的情况下,使用Tranional 注解时,应该指定事务管理者Tranional(tranionManager = test2TranionManager )4.4.5 启动项目SpringBootApplicationMapperScan(basePackages = com.itmayiedu.mapper ) public class App public sic void main(String args) Spring
43、Application.run(App.class, args);publicerface User1Mapper Insert(inserto users values(null,#age);)publicaddUser(Param(name) String name, Param(age)eger age);Bean(name = test2SqlSesTemplate)public SqlSesTemplate testSqlSesTemplate(Qualifier(test2SqlSesFactory) SqlSesFactory sqlSesFactory) throws Exce
44、ption return new SqlSesTemplate(sqlSesFactory);No qualifying bean of type javax.sql.DataSourceisdefined:expectedsinglematchingbeanbutfound2:test1DataSource,test2DataSource加上Primary 即可。Springboot1.5 的时候 没有默认指向数据源 会报错Springboot2.0 的时候 不报错五、事物管理5.1.1SpringBoot 整合事物管理Springboot 默认集成事物,只主要在方法上加上Tranional
45、 即可5.1.2SpringBoot 分布式事物管理使用 springboot+jta+atomikos 分布式事物管理Atomikos 是一个为 Java提供增值服务的并且开源类事务管理器。 新增 jta-atomikos 依赖.springframework.bootspring-boot-starter-jta-atomikosThere was an unexpected error (type=ernal Server Error, sus=500).No qualifying bean of type .springframework.tranion.PlatformTranion
46、Manager available: expected single matching bean but found 2:test1TranionManager,test2TranionManager指定事务管理器 新增配置文件信息配置文件信息DataConfigurationProperties(prefix = .datasource.test1)public class DBConfig1 private String url; private String username; private String password; privateminPoolSize;privatemaxP
47、oolSize;#1.datasource.test1.url = jdbc:/localhost:3306/test01?useUnicode=true&characterEncoding=utf-8.datasource.test1.username = root.datasource.test1.password = root.datasource.test1.minPoolSize = 3.datasource.test1.maxPoolSize = 25.datasource.test1.maxLifetime = 20000.datasource.test1.borrowConne
48、ctionTimeout = 30.datasource.test1.logimeout = 30.datasource.test1.maenanceerval = 60.datasource.test1.maxIdleTime = 60#2.datasource.test2.url =jdbc:/localhost:3306/test02?useUnicode=true&characterEncoding=utf-8.datasource.test2.username =root.datasource.test2.password =root.datasource.test2.minPool
49、Size = 3.datasource.test2.maxPoolSize = 25.datasource.test2.maxLifetime = 20000.datasource.test2.borrowConnectionTimeout = 30.datasource.test2.logimeout = 30.datasource.test2.maenanceerval = 60.datasource.test2.maxIdleTime = 60 创建多数据源Configuration/ basePackages 最好分开配置 如果放在同一个文件夹可能会报错MapperScan(baseP
50、ackages = com.itmayiedu.test01, sqlSesTemplateRef = testSqlSesTemplate)public class MyBatisConfig1 / 配置数据源PrimaryBean(name = testDataSource)public DataSource testDataSource(DBConfig1 testConfig) throws SQLException XADataSourceXaDataSource = newXADataSource(); XaDataSouretUrl(testConfig.getUrl();XaD
51、ataSouretlobalTxToPhysicalConnection(true);privatemaxLifetime;privateborrowConnectionTimeout;privatelogimeout; privatemaenanceerval; privatemaxIdleTime; private String testQuery;DataConfigurationProperties(prefix = .datasource.test2)public class DBConfig2 private String url; private String username;
52、 private String password; privateminPoolSize;privatemaxPoolSize;privatemaxLifetime;privateborrowConnectionTimeout;privatelogimeout; privatemaenanceerval; privatemaxIdleTime; private String testQuery;XaDataSouretPassword(testConfig.getPassword(); XaDataSouretUser(testConfig.getUsername(); XaDataSoure
53、tlobalTxToPhysicalConnection(true);AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean(); xaDataSouretXaDataSource(XaDataSource);xaDataSouretUniqueResourceName(testDataSource);xaDataSour etMinPoolSize(testConfig.getMinPoolSize(); xaDataSour etMaxPoolSize(testConfig.getMaxPoolSize(); xaD
54、ataSour etMaxLifetime(testConfig.getMaxLifetime();xaDataSouretBorrowConnectionTimeout(testConfig.getBorrowConnectionTimeout(); xaDataSouretLogimeout(testConfig.getLogimeout();xaDataSouretMaenanceerval(testConfig.getMaenanceerval(); xaDataSouretMaxIdleTime(testConfig.getMaxIdleTime();xaDataSouretTest
55、Query(testConfig.getTestQuery();return xaDataSource;PrimaryBean(name = testSqlSesFactory)public SqlSesFactory testSqlSesFactory(Qualifier(testDataSource) DataSource dataSource)throws Exception SqlSes FactoryBean bean = new SqlSes FactoryBean(); bean.setDataSource(dataSource);return bean.getObject();
56、PrimaryBean(name = testSqlSesTemplate)public SqlSesTemplate testSqlSesTemplate(Qualifier(testSqlSesFactory) SqlSesFactory sqlSesFactory) throws Exception return new SqlSesTemplate(sqlSesFactory);ConfigurationMapperScan(basePackages = com.itmayiedu.test02, sqlSesTemplateRef = test2SqlSesTemplate)publ
57、ic class MyBatisConfig2 / 配置数据源Bean(name = test2DataSource)public DataSource testDataSource(DBConfig2 testConfig) throws SQLException XADataSourceXaDataSource = newXADataSource();XaDataSouretUrl(testConfig.getUrl();XaDataSouretlobalTxToPhysicalConnection(true); XaDataSouretPassword(testConfig.getPas
58、sword(); XaDataSouretUser(testConfig.getUsername(); XaDataSouretlobalTxToPhysicalConnection(true);AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean(); xaDataSouretXaDataSource(XaDataSource);xaDataSouretUniqueResourceName(test2DataSource);xaDataSour etMinPoolSize(testConfig.getMinPoolS
59、ize(); xaDataSour etMaxPoolSize(testConfig.getMaxPoolSize(); xaDataSour etMaxLifetime(testConfig.getMaxLifetime();xaDataSouretBorrowConnectionTimeout(testConfig.getBorrowConnectionTimeout(); xaDataSouretLogimeout(testConfig.getLogimeout();xaDataSouretMaenanceerval(testConfig.getMaenanceerval(); xaDa
60、taSouretMaxIdleTime(testConfig.getMaxIdleTime();xaDataSouretTestQuery(testConfig.getTestQuery();return xaDataSource;Bean(name = test2SqlSesFactory)public SqlSesFactory testSqlSesFactory(Qualifier(test2DataSource) DataSource dataSource)throws Exception SqlSes FactoryBean bean = new SqlSes FactoryBean
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投标委托书(15篇)
- 建筑工程施工项目承包合同书
- 细胞-乳腺癌课件
- 马来酸麦角新碱联合卡前列素氨丁三醇治疗高危产后出血倾向二次剖宫产产妇的效果
- 中国企业智能化成熟度报告(2024) -企业智能化转型进入2.0时代
- 广东省中山市高考语文模拟试题(含答案)
- 2025年养老行业前景与未来发展趋势预测
- 2024年食品行业食品安全管理体系认证合同
- 餐厅供货协议合同协议范本模板
- 汽车修理厂承包合同模板
- 输变电工程监督检查标准化清单-质监站检查
- 【超星学习通】马克思主义基本原理(南开大学)尔雅章节测试网课答案
- 2024年中国工业涂料行业发展现状、市场前景、投资方向分析报告(智研咨询发布)
- 化工企业重大事故隐患判定标准培训考试卷(后附答案)
- 工伤赔偿授权委托书范例
- 工程变更履历表
- 煤矿岗位标准化作业流程
- 唯物史观课件
- 信息资源管理(马费成-第三版)复习重点
- 邮轮外部市场营销类型
- GB/T 42460-2023信息安全技术个人信息去标识化效果评估指南
评论
0/150
提交评论