传统的web开发模式:所有的功能打包在一个包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了DO/DAO,Service,UI等所有逻辑。(注:没找到更好的图片,只好转载一下CSDN的配图了)
这种方式比较适合小型的项目,开发集中简单,方便管理。
但是对于大型的项目来是说,系统的稳定性,扩展度,灵活性都差强人意。所以就需要分布式开发,也就是微服务架构了。微服务的目的是有效的拆分应用,实现敏捷开发和部署。
随着微服务理念的兴起,SpringBoot正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用Spring、更容易的集成各种常用的中间件、开源软件;另一方面,SpringBoot诞生时,正处于微服务概念在慢慢酝酿中,SpringBoot的研发融合了微服务架构的理念,实现了在Java领域内微服务架构落地的技术支撑。
1.2、什么是springboot?
作为微服务的入门级框架,springboot具有方便快速等优点,是我们的首选。
官网翻译:SpringBoot可以很简单的就创建一个你可以运行的独立的、生产级别的应用系统。我们可以使用Spring平台和第三方库快速的开始,很多的SpringBoot应用需要很少的配置。
翻译成大白话就是:SpringBoot是集成了多种架构于一体的架构,能够减少配置,更加便捷开发。
1.3、springboot的主要特点:
二、环境搭建
eclipse直接安装就好;
SourceTree和NavicatforMySQL直接安装用就好;
ps:我链接的服务器,所以没搭建本地sql数据库;如果没有服务器上的mysql数据库,本地需要搭建一个并进行配置
三、项目实例
3.1、工程结构
3.2、重点要做好swaggerConfig端口配置,配置好port端口号
3.3、配置dev的ip和端口信息:
3.4、写好xml的数据库查询文件:
3.5、右键debug-icmsDeviceApplication,启动运行程序
3.6、程序运行起来后,打开swagger界面
四、项目实例
controller层
4.1、增加用户
/***@Title:insertRole*@Description:增加角色*@param:@paramrole*@param:@return*@return:Object*@throws*/@ApiOperation(value="增加角色")@PostMapping(value="${icmsuser.role.insertRoleUrl}",consumes={"application/json;charset=UTF-8"},produces={"application/json;charset=UTF-8"})publicObjectaddUser(@RequestBodyRolerole){logger.info("入口信息为:"+role.toString());Objectresult=null;if(role!=null&&StringUtils.isNotEmpty(role.getRoleName())){try{role.setCreator(1);roleService.insertRole(role);result=ResultFactory.getInstance().getSingleValueResult(Boolean.valueOf("true"));logger.info("增加角色信息成功:"+role.toString()+"返回信息:"+result.toString());}catch(Exceptione){logger.error("增加角色信息异常",e);}}else{result=ResultFactory.getInstance().getErrorResult("00050003");logger.error("您输入的为空或含有空信息,错误码:00050003");}logger.info("出口信息为:"+result.toString());returnresult;}
4.2、删除用户
/***@Title:deleteRoleByID*@Description:删除角色*@param:@paramroleID*@param:@return*@return:Object*@throws*/@ApiOperation(value="删除角色")@DeleteMapping(value="${icmsuser.role.deleteRoleByIDUrl}")publicObjectdeleteRoleByID(@RequestParam(value="roleID",required=true)IntegerroleID){logger.info("入口信息:"+roleID);Objectresult=null;if(roleID!=null&&!"".equals(roleID)){roleService.deleteRoleByRoleID(roleID);result=ResultFactory.getInstance().getSingleValueResult(Boolean.valueOf("true"));logger.info("删除角色信息成功ID为:"+roleID+"返回信息:"+result.toString());}else{result=ResultFactory.getInstance().getErrorResult("00050005");logger.error("输入信息不能为空");}returnresult;}
4.3、修改用户
/***@Title:updateRole*@Description:修改角色*@param:@paramrole*@param:@return*@return:Object*@throws*/@ApiOperation("修改角色")@PostMapping(value="${icmsuser.role.updateRoleUrl}",consumes={"application/json;charset=UTF-8"},produces={"application/json;charset=UTF-8"})publicObjectupdateRole(@RequestBody@ApiParam(name="role",value="角色信息",required=true)Rolerole){logger.info("入口信息为:"+role.toString());Objectresult=null;RoleroleQueryObj=roleService.findRoleByRoleID(role.getRoleID());if(null==roleQueryObj){logger.error("没有此条记录,错误码:00050004");result=ResultFactory.getInstance().getErrorResult("00050004");}else{try{//修改角色roleService.updateRole(role);//返回信息result=ResultFactory.getInstance().getSingleValueResult(Boolean.valueOf("true"));logger.info("修改角色信息成功:"+role.toString()+"返回信息:"+result.toString());}catch(Exceptione){logger.error("修改角色信息异常",e);}}logger.info("出口信息为:"+result.toString());returnresult;}
4.4、查找用户
/***@Title:findRoleByRoleID*@Description:根据ID查询角色信息*@param:@paramroleID*@param:@return*@return:Object*@throws*/@ApiOperation("根据ID查询角色信息")@GetMapping(value="${icmsuser.role.findRoleByIDUrl}")publicObjectfindRoleByRoleID(@RequestParam(value="roleID",required=true)IntegerroleID){logger.info("入口信息为:"+roleID);ObjectresultObj=null;if(roleID!=null){try{Rolerole=roleService.findRoleByRoleID(roleID);resultObj=role;}catch(Exceptione){logger.error("角色ID获取角色信息",e);}}else{logger.error("根据编号查询角色信息接口,输入信息不能为空,请重新输入,错误码:00050001");resultObj=ResultFactory.getInstance().getErrorResult("00050001");}returnresultObj;}
domain层
mapper层
service层
publicinterfaceRoleService{/***@Title:findRoleByRoleID*@Description:根据角色编号查询角色信息*@param:@paramroleID*@param:@return*@return:Role*@throws*/publicRolefindRoleByRoleID(IntegerroleID);publicvoidinsertRole(Rolerole);publicvoidupdateRole(Rolerole);publicvoiddeleteRoleByRoleID(introleID);}
serviceImpl层
resource文件夹中的xml文件:
五、工作中可能出现的异常及排查
5.1、工作空间中,必须得有环境配置的pom
5.2、java配置由jre改成jdk
5.3、点开下拉项,在对话框里输入字符,点击“tryitout”,观察返回结果