当前位置: 首页 > news >正文

定制开发生产管理软件推荐重庆网站优化排名

定制开发生产管理软件推荐,重庆网站优化排名,网站网站开发需要多少钱,iis7 网站打不开一、SpringBoot概述 1. 简介 springboot是spring家族中的一个全新框架#xff0c;用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候#xff0c;我们需要配置web.xml#xff0c;spring配置#xff0c;mybatis配置#xff0c;…一、SpringBoot概述 1. 简介 springboot是spring家族中的一个全新框架用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候我们需要配置web.xmlspring配置mybatis配置然后整合在一起而springboot抛弃了繁琐的xml配置过程采用大量默认的配置来简化我们的spring开发过程。 SpringBoot化繁为简使开发变得更加的简单迅速。 2. 特性 (1) 能够快速创建基于spring的程序 (2) 能够直接使用Java main方法启动内嵌的Tomcat服务器运行springboot程序不需要部署war包 (3) 提供约定的starter POM来简化Maven配置让Maven的配置变得简单 (4) 自动化配置根据项目的Maven依赖配置springboot自动配置spring、springmvc等 (5) 提供了程序的健康检查功能 (6) 基本可以完全不使用xml配合文件采用注解配置 3. 四大核心 自动配置、起步依赖、Actuator、命令行界面 二、springboot入门案例 1. SpringBoot 项目开发步骤 1创建一个 Module选择类型为Spring Initializr 快速构建 2设置 GAV 坐标及 pom 配置信息  3选择 Spring Boot 版本及依赖 4设置模块名称、Content Root 路径及模块文件的目录然后点击finish即可 5项目结构如下 static存放静态资源。如图片、CSS、JavaScript 等 templates存放 Web 页面的模板文件 application.properties/application.yml 用于存放程序的各种依赖模块的配置信息比如 服务端口数据库连接配置等.gitignore使用版本控制工具 git 的时候设置一些忽略提交的内容 Application.javaSpringBoot 程序执行的入口执行该程序中的 main 方法启动当前SpringBoot项目。 6对pom.xml文件进行解释 ?xml version1.0 encodingUTF-8?  project xmlnshttp://maven.apache.org/POM/4.0.0  xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0  http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion !--继承 SpringBoot 框架的一个父项目所有自己开发的 Spring Boot 都必须的继承-- parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.2.1.RELEASE/version relativePath/ !-- lookup parent from repository -- /parent !--当前项目的 GAV 坐标-- groupIdcom.bjpowernode.springboot/groupId artifactId002-springboot-springmvc/artifactId version1.0.0/version !--maven 项目名称可以删除-- name002-springboot-springmvc/name !--maven 项目描述可以删除-- descriptionDemo project for Spring Boot/description !--maven 属性配置可以在其它地方通过${}方式进行引用-- properties java.version1.8/java.version /properties dependencies !--SpringBoot 框架 web 项目起步依赖通过该依赖自动关联其它依赖不需要我们一个一个去添加 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !--SpringBoot 框架的测试起步依赖例如junit 测试如果不需要的话可以删除-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope exclusions exclusion groupIdorg.junit.vintage/groupId artifactIdjunit-vintage-engine/artifactId /exclusion /exclusions /dependency /dependencies build plugins !--SpringBoot提供的打包编译等插件-- plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin /plugins /build  /project  2. 创建一个 Spring MVC 的 Spring BootController  1创建SpringBootController 类 注意新创建的类一定要位于 Application 同级目录或者下级目录否则 SpringBoot 加 载不到。  package com.bjpowernode.springboot.web; import org.springframework.stereotype.Controller;  import org.springframework.web.bind.annotation.RequestMapping;  import org.springframework.web.bind.annotation.ResponseBody; Controller  public class SpringBootController { RequestMapping(value /springBoot/say) public ResponseBody String say() { return Hello,springBoot!; }  }  2启动Application类中的main方法 通过在控制台的输出可以看到启动 SpringBoot 框架会启动一个内嵌的 tomcat端 口号为 8080上下文根为空 。 3在浏览器中输入 http://localhost:8080/springBoot/say进行访问  3.  分析 1spring-boot-starter-parent 是一个 Springboot 的父级依赖开发 SpringBoot 程序都需 要继承该父级项目它用来提供相关的 Maven 默认依赖使用它之后常用的 jar 包依赖可以省去 version 配置          2Spring Boot 提供了一些默认的jar 包的依赖可查看该父级依赖的 pom 文件          3如果不想使用某个默认的依赖版本可以通过 pom.xml 文件的属性配置覆盖各个 依赖项比如覆盖 Spring 版本  properties spring-framework.version5.0.0.RELEASE/ spring-framework.version  /properties  4 SpringBootApplication 注解是 Spring Boot 项目的核心注解主要作用是开启 Spring 自动配置如果在 Application 类上去掉该注解那么不会启动 SpringBoot程序          5main 方法是一个标准的 Java 程序的 main 方法是boot项目启动运行的入口         6Controller 及 ResponseBody 依然是我们之前的 Spring MVC因为 Spring Boot 的里面依然是使用我们的 Spring MVC Spring MyBatis 等框架  4. 核心配置文件格式 1.properties 文件默认采用该文件  通过修改 application.properties 配置文件修改默认 tomcat 端口号及项目上下文件根 #设置内嵌 Tomcat 端口号  server.port9090 #配置项目上下文根  server.servlet.context-path/003-springboot-port-context-path 页面显示结果 2 .yml 文件 项目名称004-springboot-yml yml 是一种 yaml 格式的配置文件主要采用一定的空格、换行等格式排版进行配置。它能够直观的被计算机识别数据序列化格式容易被人类阅读yaml 类似于 xml但是语法比 xml 简洁很多值与前面的冒号配置项必须要有一个空格 yml 后缀也可以使用 yaml 后缀 。 注意当两种格式配置文件同时存在时使用的是.properties 配置文件。 3多环境配置.properties方式 在实际开发的过程中我们的项目会经历很多的阶段开发-测试-上线每个阶段 的配置也会不同例如端口、上下文根、数据库等那么这个时候为了方便在不同的环境 之间切换SpringBoot 提供了多环境配置具体步骤如下 为每个环境创建一个配置文件命名必须为 application-环境标识.properties|yml application-dev.properties (开发环境核心置文件) #开发环境 #设置内嵌 Tomcat 默认端口号  server.port8080 #设置项目的上下文根  server.servlet.context-path/005-springboot-multi-environment-dev  application-product.properties (生产环境核心置文件) #生产环境 #配置内嵌 Tomcat 默认端口号  server.port80 #配置项目上下文根  server.servlet.context-path/005-springboot-multi-environment-product  application-test.properties (测试环境核心置文件) #测试环境 #配置内嵌 Tomcat 端口号  server.port8081 #配置项目的上下文根  server.servlet.context-path/005-springboot-multi-environment-test  在总配置文件 application.properties 进行环境的激活 #SpringBoot 的总配置文件 #激活开发环境  #spring.profiles.activedev #激活测试环境  #spring.profiles.activetest #激活生产环境  spring.profiles.activeproduct  4多环境配置.yml方式 application-dev.yml #设置开发环境配置 server: port: 8080 #设置 Tomcat 内嵌端口号 servlet: context-path: /dev #设置上下文根  application-product.yml #设置生产环境配置 server: port: 80 servlet: context-path: /product  application-test.yml #设置测试环境配置 server: port: 9090 servlet: context-path: /test 在总配置文件 application.yml进行环境的激活 #springboot 总配置文件 #激活开发环境  #spring:  # profiles:  #  active: dev #激活测试环境  #spring:  # profiles:  #  active: test #激活生产环境  spring: profiles: active: product  5Spring Boot 自定义配置 在 SpringBoot 的核心配置文件中除了使用内置的配置项之外我们还可以在自定义配 置然后采用如下注解去读取配置的属性值 AValue注解 用于逐个读取application.properties中的配置 案例演示 1 在核心配置文件 applicatin.properties 中添加两个自定义配置项 school.name 和 website。在 IDEA 中可以看到这两个属性不能被 SpringBoot 识别背景是桔色的 .properties方式 .yml方式 #设置端口号及上下文根  server: port: 9090 servlet: context-path: / school: name: ssm  websit: http://www.baidu.com  2在 SpringBootController 中定义属性并使用Value 注解或者自定义配置值并对其方法进行测试 Controller  public class SpringBootController { Value(${school.name}) private String schoolName; Value(${websit}) private String websit; RequestMapping(value /springBoot/config) public ResponseBody String say() { return schoolName ------ websit; }  }  3重新运行 Application在浏览器中进行测试  BConfigurationProperties 作用将整个文件映射成一个对象用于自定义配置项比较多的情况 。 案例演示 1在 com.abc.springboot.config 包下创建 ConfigInfo 类并为该类加上 Component 和 ConfigurationProperties 注解并在 ConfigurationProperties 注解中添加属性 prefix可以区分同名配置 。 Data Component  ConfigurationProperties(prefix school)  public class ConfigInfo { private String name; private String websit;  }  2application.properties 配置文件 #设置内嵌 Tomcat 端口号  server.port9090 #设置上下文根  server.servlet.context-path/config school.namessm  school.websithttp://www.baidu.com  3在 SpringBootController 中注入 ConfigInfo 配置类  Autowired  private ConfigInfo configInfo;  4修改 SpringBootController 类中的测试方法 RequestMapping(value /springBoot/config)  public ResponseBody String say() { return configInfo.getName() configInfo.getWebsit();  }  5重新运行 Application在浏览器中进行测试  C警告解决 在 ConfigInfo 类中使用了 ConfigurationProperties 注解后IDEA 会出现一个警告不影响程序的执行。 点击 open documentnation 跳转到网页在网页中提示需要加一个依赖我们将这 个依赖拷贝粘贴到 pom.xml 文件中 即可。 !--解决使用ConfigurationProperties 注解出现警告问题--  dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-configuration-processor/artifactId optionaltrue/optional  /dependency  D中文乱码 如果在 SpringBoot 核心配置文件中有中文信息会出现乱码  一般在配置文件中不建议出现中文注释除外  如果出现中文可以先转化为 ASCII 码  2.5  Spring Boot 前端使用 JSP          1在 pom.xml 文件中配置以下依赖项 !--引入 Spring Boot 内嵌的 Tomcat 对 JSP 的解析包不加解析不了 jsp 页面--  !--如果只是使用 JSP 页面可以只添加该依赖--  dependency   groupIdorg.apache.tomcat.embed/groupId   artifactIdtomcat-embed-jasper/artifactId  /dependency    !--如果要使用 servlet 必须添加该以下两个依赖--  !-- servlet 依赖的 jar 包--  dependency   groupIdjavax.servlet/groupId   artifactIdjavax.servlet-api/artifactId  /dependency  dependency   groupIdjavax.servlet.jsp/groupId   artifactIdjavax.servlet.jsp-api/artifactId   version2.3.1/version  /dependency    !--如果使用 JSTL 必须添加该依赖--  !--jstl 标签依赖的 jar 包 start--  dependency   groupIdjavax.servlet/groupId   artifactIdjstl/artifactId  /dependency          2在 pom.xml 的 build 标签中要配置以下信息          SpringBoot 要求 jsp 文件必须编译到指定的 META-INF/resources 目录下才能访问否则 访问不到。其实官方已经更建议使用模板技术。 !--   SpringBoot 要求 jsp 文件必须编译到指定的 META-INF/resources 目录下才能访问否则访问 不到。   其它官方已经建议使用模版技术 --  resources   resource       !--源文件位置--       directorysrc/main/webapp/directory       !--指定编译到 META-INF/resources该目录不能随便写--       targetPathMETA-INF/resources/targetPath       !--指定要把哪些文件编译进去**表示 webapp 目录及子目录*.*表示所有文件--       includes           include**/*.*/include       /includes   /resource  /resources          3在 application.properties 文件配置 Spring MVC 的视图展示为jsp这里相当于 Spring MVC 的配置。 #SpringBoot 核心配置文件  #指定内嵌 Tomcat 端口号  server.port8090    #配置 SpringMVC 视图解析器  #其中/ 表示目录为 src/main/webapp  spring.mvc.view.prefix/  spring.mvc.view.suffix.jsp          4在 com.abc.springboot.controller 包下创建 JspController 类 Controller  public class SpringBootController {     RequestMapping(value /springBoot/jsp)   public String jsp(Model model) {         model.addAttribute(data,SpringBoot 前端使用 JSP 页面);     return index;   }  }          5在 src/main 下创建一个 webapp 目录然后在该目录下新建index.jsp 页面  注意 如果在webapp目录下右键没有创建jsp的选项可以在Project Structure中指定webapp为 Web Resource Directory 。 6在 index.jsp 中获取 Controller 传递过来的数据  7重新运行 Application通过浏览器访问测试  3 SpringBoot框架Web开发 通过实际代码案例进行梳理 3.1  Spring Boot 集成 MyBatis  通过 SpringBoot MyBatis 实现对数据库学生表的查询操作的实现步骤 1创建新的数据库springboot并向表中插入数据 2创建一个新的 SpringBoot 的 Module  创建项目的过程省略 3在 pom.xml 中添加相关 jar 依赖  !--MyBatis 整合 SpringBoot 的起步依赖--  dependency   groupIdorg.mybatis.spring.boot/groupId   artifactIdmybatis-spring-boot-starter/artifactId   version2.0.0/version  /dependency    !--MySQL 的驱动依赖--  dependency   groupIdmysql/groupId   artifactIdmysql-connector-java/artifactId  /dependency  4在 Springboot 的核心配置文件 application.properties 中配置数据源  #配置内嵌 Tomcat 端口号  server.port9090    #配置项目上下文根  server.servlet.context-path/010-springboot-web-mybatis    #配置数据库的连接信息  #注意这里的驱动类有变化  spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver  spring.datasource.urljdbc:mysql://localhost:3306/springboot?useUnicodetruecharacterEncodingUTF-8useJDBCCompliantTimezoneShifttrueuseLegacyDatetimeCodefalseserverTimezoneGMT%2B8    spring.datasource.usernameroot  spring.datasource.passwordroot 5开发代码代码生成器 使用 Mybatis 反向工程生成接口、映射文件以及实体 bean具体步骤参见附录 1 A在 web 包下创建 StudentController 并编写代码 Controller  public class StudentController {     Autowired   private StudentService studentService;     RequestMapping(value /springBoot/student)   public ResponseBody Object student() {     Student student studentService.queryStudentById(1);     return student;   }  }          B在 service 包下创建 service 接口并编写代码  public interface StudentService {     /**   * 根据学生标识获取学生详情   * param id   * return   */   Student queryStudentById(Integer id);  }         C在 service.impl 包下创建 service 接口并编写代码 Service  public class StudentServiceImpl implements StudentService {       Autowired   private StudentMapper studentMapper;     Override   public Student queryStudentById(Integer id) {   return studentMapper.selectByPrimaryKey(id);   }  }          D如果在 web 中导入 service 存在报错可以尝试进行如下配置解决  E 在 Mybatis 反向工程生成的 StudentMapper 接口上加一个 Mapper 注解  Mapper 作用mybatis 自动扫描数据持久层的映射文件及 DAO 接口的关系 Mapper  public interface StudentMapper {  }         F默认情况下Mybatis 的 xml 映射文件不会编译到 target 的 class 目录下所 以我们需要在 pom.xml 文件中配置 resource 。 resources   resource   directorysrc/main/java/directory   includes       include**/*.xml/include   /includes   /resource  /resources         G启动 Application 应用浏览器访问测试运行 3.2 DAO 的其它开发方式 方式一 A注释掉 StudentMapper 接口上的Mapper 注解  B在运行的主类上添加注解包扫描MapperScan(com.abc.springboot.mapper)  SpringBootApplication  MapperScan(com.abc.springboot.mapper)  public class Application {  或 SpringBootApplication  //Mybatis 提供的注解扫描数据持久层的 mapper 映谢配置文件,DAO 接口上就不用加Mapper  //basePackages 通常指定到数据持久层包即可  MapperScan(basePackages com.abc.springboot.mapper)  public class Application {  方式二 因为 SpringBoot 不能自动编译接口映射的 xml 文件还需要手动在 pom 文件中指定 所以有的公司直接将映射文件直接放到 resources 目录下 在 resources 目录下新建目录 mapper 存放映射文件将 StudentMapper.xml 文件移到resources/mapper 目录下 在 application.properties 配置文件中指定映射文件的位置这个配置只有接口和映 射文件不在同一个包的情况下才需要指定 # 指定 Mybatis 映射文件的路径  mybatis.mapper-locationsclasspath:mapper/*.xml   3.3 Spring Boot 事务支持 springboot事务底层依然采用的是 Spring 本身提供的事务管理。 在入口类中使用注解EnableTransactionManagement开启事务支持 在访问数据库的service方法上添加注解Transactional即可        在上述案例的基础上通过 SpringBoot MyBatis 实现对数据库学生表的更新操作在 service 层的方法中构建异常查看事务是否生效 1在 StudentController 中添加更新学生的方法 RequestMapping(value /springboot/modify)  public ResponseBody Object modifyStudent() {     int count 0;   try {   Student student new Student();   student.setId(1);   student.setName(Jack);   student.setAge(33);   count studentService.modifyStudentById(student);   } catch (Exception e) {   e.printStackTrace();   return fail;   }     return count;  }          2在 StudentService 接口中添加更新学生方法 int modifyStudentById(Student student);          3在 StudentServiceImpl 接口实现类中对更新学生方法进行实现并构建一个异常同时在该方法上加Transactional 注解。 Override  Transactional //添加此注解说明该方法添加的事务管理  public int update(Student student) {     int updateCount studentMapper.updateByPrimaryKeySelective(student);     System.out.println(更新结果 updateCount);     //在此构造一个除数为 0 的异常测试事务是否起作用   int a 10/0;     return updateCount;  }          4在Application类上加EnableTransactionManagement开启事务支持。 EnableTransactionManagement 可选但是业务方法上必须添加Transactional 事务才生效 SpringBootApplication  MapperScan(basePackages com.abc.springboot.mapper)  EnableTransactionManagement //开启事务支持(可选项但Transactional 必须添加)  public class Application {  3.4  Spring Boot 下的 Spring MVC注解 springboot下的springMVC主要有以下注解 1ControllerSpring MVC 的注解处理 http 请求 2RestController Controller 与ResponseBody 的组合注解  如果一个 Controller 类添加了RestController那么该 Controller 类下的所有方法都相当 于添加了ResponseBody 注解 用于返回字符串或json数据。 创建 MyRestController 类演示RestController 替代Controller ResponseBody RestController  public class MyRestController {   Autowired   private StudentService studentService;     RequestMapping(/boot/stu)   public Object stu(){   return studentService.getStudentById(1);   }  }          3RequestMapping支持 Get 请求也支持 Post 请求 。         4GetMapping 只支持 Get 请求主要用于查询操作。 5PostMapping只支持Post请求主要用于新增数据。 6PutMapping只支持put请求主要用于修改数据 7DeleteMapping只支持delete请求通常用与删除数据 8综合案例 A创建一个 MVCController里面使用上面介绍的各种注解接收不同的请求  //RestController 注解相当于加了给方法加了ResponseBody 注解所以是不能跳转页面的只能返回字符串或者 json 数据  RestController  public class MVCController {     GetMapping(value /query)   public String get() {   return GetMapping 注解,通常查询时使用;   }       PostMapping(value /add)   public String add() {   return PostMapping 注解通常新增时使用;   }     PutMapping(value /modify)   public String modify() {   return PutMapping 注解通常更新数据时使用;   }     DeleteMapping(value /remove)   public String remove() {   return DeleteMapping 注解通常删除数据时使用;   }  }  B启动应用在浏览器中输入不同的请求进行测试 C结合POSTMan工具测试其他请求类型 3.5 SpringBoot实现RESTFUL         1简介 它是一种互联网软件设计的风格它只是提出了一组客户端和服务器交互时的架构理念和设计原则基于这种理念和原则设计的接口可以更简洁更有层次。 比如我们要访问一个 http 接口http://localhost:8080/boot/order?id1021status1  采用 RESTFul 风格则 http 地址为http://localhost:8080/boot/order/1021/1  2开发RESTFUL主要用到以下注解 PathVariable 获取 url 中的数据该注解是实现 RESTFul 最主要的一个注解  PostMapping 接收和处理post方式的请求 DeleteMapping接收delete方式的请求可以用GetMapping代替 PutMapping 接收put方式的请求可以用 PostMapping 代替  GetMapping 接收get方式请求 3案例使用 RESTful 风格模拟实现对学生的增删改查操作 该项目集成了 MyBatis、spring、SpringMVC通过模拟实现对学生的增删改查操作 pom.xml文件 dependencies   !--SpringBoot 框架 web 项目起步依赖--   dependency       groupIdorg.springframework.boot/groupId       artifactIdspring-boot-starter-web/artifactId   /dependency     !--MyBatis 集成 SpringBoot 框架起步依赖--   dependency       groupIdorg.mybatis.spring.boot/groupId       artifactIdmybatis-spring-boot-starter/artifactId       version2.0.1/version   /dependency   !--MySQL 驱动--   dependency       groupIdmysql/groupId       artifactIdmysql-connector-java/artifactId   /dependency  /dependencies    build   !--指定配置资源的位置--   resources       resource           directorysrc/main/java/directory           includes               include**/*.xml/include           /includes       /resource   /resources     plugins       !--mybatis 代码自动生成插件--       plugin           groupIdorg.mybatis.generator/groupId           artifactIdmybatis-generator-maven-plugin/artifactId           version1.3.6/version           configuration               !--配置文件的位置--               configurationFileGeneratorMapper.xml/configurationFile               verbosetrue/verbose               overwritetrue/overwrite           /configuration       /plugin         plugin           groupIdorg.springframework.boot/groupId           artifactIdspring-boot-maven-plugin/artifactId       /plugin   /plugins  /build  application. properties核心配置文件 #配置内嵌 Tomcat 端口号  server.port8090    #配置项目上下文根  server.servlet.context-path/   #配置数据库的连接信息  #注意这里的驱动类有变化  spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver  spring.datasource.urljdbc:mysql://localhost:3306/springboot?useUnicodetruecharacterEncodingUTF-8useJDBCCompliantTimezoneShifttrueuseLegacyDatetimeCodefalseserverTimezoneGMT%2B8    spring.datasource.usernameroot  spring.datasource.passwordroot 通过逆向工程生成 DAO 创建 RESTfulController RestController  public class RESTfulController {     /**   * 添加学生   * 请求地址 http://localhost:9090/014-springboot-restful/springBoot/student/wangpeng/23   * 请求方式POST   * param name   * param age   * return   */   PostMapping(value /springBoot/student/{name}/{age})   public Object addStudent(PathVariable(name) String name, PathVariable(age) Integer age) {     MapString,Object retMap new HashMapString, Object();   retMap.put(name,name);   retMap.put(age,age);       return retMap;   }     /**   * 删除学生   * 请求地址 http://localhost:9090/014-springboot-restful/springBoot/student/1   * 请求方式Delete   * param id   * return   */   DeleteMapping(value /springBoot/student/{id})   public Object removeStudent(PathVariable(id) Integer id) {     return 删除的学生 id 为 id;   }     /**   * 修改学生信息   * 请求地址 http://localhost:9090/014-springboot-restful/springBoot/student/2   * 请求方式Put   * param id   * return   */   PutMapping(value /springBoot/student/{id})   public Object modifyStudent(PathVariable(id) Integer id) {     return 修改学生的 id 为 id;   }     GetMapping(value /springBoot/student/{id})   public Object queryStudent(PathVariable(id) Integer id) {     return 查询学生的 id 为 id;   }  }  使用 Postman 模拟发送请求进行测试 4请求冲突的问题 解决方案1修改路径     2修改请求方式 创建 RESTfulController 类结合 Postman 进行测试说明 RestController  public class RESTfulController {     /**   * id:订单标识   * status订单状态   * 请求路径 http://localhost:9090/015-springboot-restful-url-conflict/springBoot/orde r/1/1001   * param id   * param status   * return   */   GetMapping(value /springBoot/order/{id}/{status})   public Object queryOrder(PathVariable(id) Integer id, PathVariable(status) Integer status) {     MapString,Object map new HashMapString,Object();     map.put(id,id);   map.put(status,status);     return map;   }     /**   * id:订单标识   * status订单状态   * 请求路径 http://localhost:9090/015-springboot-restful-url-conflict/springBoot/1/or der/1001   * param id   * param status     * return   */   GetMapping(value /springBoot/{id}/order/{status})   public Object queryOrder1(PathVariable(id) Integer id, PathVariable(status) Integer status) {   MapString,Object map new HashMapString,Object();     map.put(id,id);   map.put(status,status);     return map;   }     /**   * id:订单标识   * status订单状态   * 请求路径 http://localhost:9090/015-springboot-restful-url-conflict/springBoot/1001 /order/1   * param id   * param status   * return   */   GetMapping(value /springBoot/{status}/order/{id})   public Object queryOrder2(PathVariable(id) Integer id,   PathVariable(status) Integer status) {   MapString,Object map new HashMapString,Object();     map.put(id,id);   map.put(status,status);     return map;   }     /**   * id:订单标识   * status订单状态   * 请求路径 http://localhost:9090/015-springboot-restful-url-conflict/springBoot/1001 /order/1   * param id   * param status   * return   */       PostMapping(value /springBoot/{status}/order/{id})   public Object queryOrder3(PathVariable(id) Integer id,  PathVariable(status) Integer status) {   MapString,Object map new HashMapString,Object();     map.put(id,id);   map.put(status,status);     return map;   }           /**   * query1 和 query2 两个请求路径会发生请求路径冲突问题   * query3 与 query1 和 query2 发生请求冲突   * 注意虽然两个路径写法改变了但是由于传递的两个参数都是 int 值所以不知道该交给 哪个请求进行处理   * 就会出现匹配模糊不清的异常所以要想解决冲突有两种方式   * 1.修改请求路径   * 2.修改请求方式   */  }          5RESTful 原则 增 post 请求、删 delete 请求、改 put 请求、查 get 请求  请求路径不要出现动词          分页、排序等操作不需要使用斜杠传参数          3.6  Spring Boot 集成 Redis          完善根据学生 id 查询学生的功能先从 redis 缓存中查找如果找不到再从数据库中 查找然后放到 redis 缓存中。 具体实现步骤 A首先通过 MyBatis 逆向工程生成实体 bean 和数据持久层 B在 pom.xml 文件中添加 redis 依赖 !-- 加载 spring boot redis 包 --  dependency   groupIdorg.springframework.boot/groupId   artifactIdspring-boot-starter-data-redis/artifactId  /dependency   CSpring Boot 核心配置文件application.properties 如下 #配置内嵌 Tomcat 端口号  server.port9090    #配置项目上下文根  server.servlet.context-path/016-springboot-redis    #配置连接 MySQL 数据库信息  spring.datasource.urljdbc:mysql://127.0.0.1:3306/springbootuseUnicodetruecharacterEncodingUTF8useJDBCCompliantTimezoneShifttrueuseLegacyDa tetimeCodefalseserverTimezoneGMT%2B8  spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver  spring.datasource.usernameroot  spring.datasource.passwordroot   #配置 redis 连接信息  spring.redis.host127.0.0.1  spring.redis.port6379  #spring.redis.passwordroot D启动redis服务 ERedisController类 RestController  public class RedisController {     Autowired   private StudentService studentService;     /**   * 请求地址 http://localhost:9090/016-springboot-redis//springboot/allStudentCount   * param request   * return   */   GetMapping(value /springboot/allStudentCount)   public Object allStudentCount(HttpServletRequest request) {     Long allStudentCount studentService.queryAllStudentCount();     return 学生总人数 allStudentCount;   }  }  FStudentService 接口 public interface StudentService {     /**   * 获取学生总人数   * return   */   Long queryAllStudentCount();  }  G在 StudentServiceImpl 中注入 RedisTemplate并编写根据 id获取学生的方法 配置了上面的步骤Spring Boot 将自动配置 RedisTemplate在需要操作 redis 的类中注入 redisTemplate 即可。          注意Spring Boot 帮我们注入 RedisTemplate 类泛型里面只能写 String, String、Object, Object或者什么都不写。 Service  public class StudentServiceImpl implements StudentService {     Autowired   private StudentMapper studentMapper;     Autowired   private RedisTemplateObject,Object redisTemplate;     Override   public Long queryAllStudentCount() {     //设置 redisTemplate 对象 key 的序列化方式   redisTemplate.setKeySerializer(new StringRedisSerializer());     //从 redis 缓存中获取总人数   Long allStudentCount (Long) redisTemplate.opsForValue().get(allStudentCount);   //判断是否为空   if ( allStudentCountnull) {   //去数据库查询并存放到 redis 缓存中     allStudentCount studentMapper.selectAllStudentCount();    redisTemplate.opsForValue().set(allStudentCount,allStudentCount,15,TimeUnit.SECONDS);   }   return allStudentCount;   }  }  HStudentMapper 接口 Mapper public interface StudentMapper {  /**   * 获取学生总人数   * return   */   Long selectAllStudentCount();  } IStudentMapper 映射文件  !--获取学生总人数--  select idselectAllStudentCount resultTypejava.lang.Long   select count(*) from  t_student  /select  J启动类 Application 在 SpringBoot 启动类上添加扫描数据持久层的注解并指定扫描包 SpringBootApplication  MapperScan(basePackages com.abc.springboot.mapper)//扫描数据持久层  public class Application {     public static void main(String[] args) {   SpringApplication.run(Application.class, args);   }    }  K让 Student 类实现序列化接口可选 在类名上 Alt 回车如果没有提示生成序列化 id那么需要做如下的配置
http://www.hkea.cn/news/14469896/

相关文章:

  • wordpress评论表单关键词优化快排
  • 东营网站搜索引擎优化软件设计思路
  • 编程序可以做网站吗深圳网站建设制作
  • 教育网站建设的意义重庆建设工程信息网官网查询平台
  • 钢铁网站模板wordpress运行c语言
  • html做网站步骤大全网站建商城
  • 网站建设 成都仿做网站要多少钱
  • 网站的开发建设费中小企业查询系统网
  • 可以做用户旅程图的网站WordPress判断文章形式
  • 手机网站建设怎样关于网站开发的期刊
  • 怎样推广海外网站天眼查在线查询系统
  • 织梦网站网站内容维护费用
  • 一个完整的网站制作需要哪些部分组成网站反链暴增怎么回事
  • 曹鹏wordpress建站seo视频河南省建设网站首页
  • 网站建设中出现的错误代码广东建数网络科技有限公司
  • 嘉兴网站模板建站百度旗下所有app列表
  • 怎么做网站界面分析wordpress支付方案解决
  • 学校门户网站建设报告帝国cms小说网站模板下载
  • 东莞网站推广运营公司名字大全三个字
  • 怎么创建自己的游戏网站企业查询
  • 网站开发有哪些风险校园网站建设结论
  • 网站网站建设公司上海柳州网站建设价格
  • 深圳营销型企业网站wordpress小说下载站
  • 怎么把网页放到网站上一个人免费观看在线高清国语
  • 舟山工程建设信息网站横琴高新区最新
  • 网站开发与规划wordpress seo不好
  • 燕窝网站怎么做的设置网络的网站
  • 青浦工厂网站建设cdq百度指数
  • 十堰h5网站建设百度推广费用可以退吗
  • 青岛福瀛建设集团有限公司网站网站建设原理