为什么要谈springBoot: 这段时间一直都在整理关于微服务的相关的知识。为什么要谈一下springboot,其实想到Java的微服务,大家都想到的肯定是springCloud。其实springCloud不等于微服务。只能说微服务通过springCloud整合一系列子项目共同帮我们实现微服务,架构。同时springcloud在内部也整合springboot。结合springboot的一些特点,所以在了解springCloud之前,我们有必要了解一下springBoot。springBoot同时也是其他语言程序员,快速搭建自己项目的最好的解决方案。什么是SpringBoot SpringBoot是Spring项目中的一个子工程,与我们所熟知的Springframework同属于spring的产品: 用一些固定的方式来构建生产级别的spring应用。SpringBoot推崇约定大于配置的方式以便于你能够尽可能快速的启动并运行程序。 其实人们把SpringBoot称为搭建程序的脚手架。其最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注与业务而非配置。为什么要学习SpringBoot java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其原因注意是两点:复杂的配置,项目各种配置其实是开发时的损耗,因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。一个是混乱的依赖管理。项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。 而SpringBoot让这一切成为过去! SpringBoot简化了基于Spring的应用开发,只需要run就能创建一个独立的、生产级别的Spring应用。SpringBoot为Spring平台及第三方库提供开箱即用的设置(提供默认设置,存放默认配置的包就是启动器),这样我们就可以简单的开始。多数SpringBoot应用只需要很少的Spring配置。 我们可以使用SpringBoot创建java应用,并使用javajar启动它,就能得到一个生产级别的web工程。SpringBoot的一些特点: SpringBoot主要目标是:为所有Spring的开发者提供一个非常快速的、广泛接受的入门体验开箱即用(启动器starter其实就是SpringBoot提供的一个jar包),但通过自己设置参数(。properties),即可快速摆脱这种方式。提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等绝对没有代码生成,也无需XML配置。 更多细节,大家可以到官网查看。快速入门搭建自己的工程。(这里演示脚手架的方式在Mac进行快速搭建) 填写项目名称 下一步勾选一下Web即可。 就这样点击下一步项目就初始化完成了。 下面我们来看看我们项目的结构,看看开发工具IDEA为我们做了什么。 项目SRC文件夹中存放的事Java代码。pom文件管理着我们项目的依赖关系。application。properties文件管理着我们项目的配置。系统自动为了application。java文件是我们启动类。 application。property的配置方式,已经被更加简洁的application。yml的配置方式所取代。下面为了大家提供一个常见的springboot的项目的常见配置。这里面包含Mysql数据库,redis。pagehelper:分页组件的一些。 server: port:8080 servlet: contextpath:jobapi spring: datasource: driverclassname:com。mysql。jdbc。Driver username:root password:abc url:jdbc:mysql:127。0。0。151job?characterEncodingutf8useSSLfalse jpa: showsql:true resources: staticlocations:classpath:templatesweb访问静态页面 redis: database:0 host:127。0。0。1 port:6379 password: mybatis配置第一种和第二种需要第三种不需要 mybatis: mapper。xml文件位置 mapperlocations:classpath:mapper。xml checkconfiglocation:true pagehelper: helperDialect:mysql reasonable:true supportmethodsarguments:true pagesizezero:true params:countcountSql添加依赖: 看到这里很多同学会有疑惑,前面说传统开发的问题之一就是依赖管理混乱,怎么这里我们还需要管理依赖呢?难道SpringBoot不帮我们管理吗? 别着急,现在我们的项目与SpringBoot还没有什么关联。SpringBoot提供了一个名为springbootstarterparent的工程,里面已经对各种常用依赖(并非全部)的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标即可! 关于依赖的配置,这里也为大家提供一个pom文件。这个pom文件可以完成常用的项目的开发。 lt;?xmlversion1。0encodingUTF8? projectxmlnshttp:maven。apache。orgPOM4。0。0xmlns:xsihttp:www。w3。org2001XMLSchemainstance xsi:schemaLocationhttp:maven。apache。orgPOM4。0。0http:maven。apache。orgxsdmaven4。0。0。xsd 4。0。0 org。springframework。boot springbootstarterparentartifactId 2。1。7。RELEASE parent com。keelon jobartifactId 0。0。1SNAPSHOT job DemoprojectforSpringBoot java。version1。8java。version properties org。springframework。boot springbootstarterwebartifactId dependency org。mybatis。spring。boot mybatisspringbootstarterartifactId 2。1。0 dependency org。mybatis。generator mybatisgeneratorcoreartifactId 1。3。5 dependency mysql mysqlconnectorjavaartifactId runtime dependency org。springframework。boot springbootstartertestartifactId test dependency tk。mybatis mapperspringbootstarterartifactId 2。0。1 dependency org。projectlombok lombokartifactId dependency com。github。pagehelper pagehelperspringbootstarterartifactId 1。2。5 dependency io。springfox springfoxswagger2artifactId 2。7。0 dependency io。springfox springfoxswaggeruiartifactId 2。7。0 dependency com。aliyun aliyunjavasdkcoreartifactId 4。1。0 dependency com。qiniu qiniujavasdkartifactId 〔7。2。0,7。2。99〕 dependency org。springframework。boot springbootstarterdataredisartifactId dependency com。alibaba fastjsonartifactId 1。2。4 dependency com。aliyun aliyunjavasdkdysmsapiartifactId 1。1。0 dependency redis。clients jedisartifactId 2。9。3 dependency dependencies org。springframework。boot springbootmavenpluginartifactId plugin org。mybatis。generator mybatisgeneratormavenpluginartifactId 1。3。2 GenerateMyBatisArtifacts generate goals execution executions true true configuration plugin plugins build project用springBoot写一个接口 写一个注册接口 1。实体类enty importlombok。Data; importorg。springframework。data。annotation。Id; Data publicclassUser{ Id privateLongid; privateStringusername; privateStringpassword; privateStringmobile; privateIntegeremail; privateIntegereducation; privateStringportrait; } mapper packagecom。keelon。job。mapper; importcom。keelon。job。pojo。User; importorg。apache。ibatis。annotations。; importcom。keelon。job。pojo。Company; importorg。springframework。stereotype。Repository; Mapper标记mapper文件位置,否则在Application。class启动类上配置mapper包扫描 Repository publicinterfaceUserMapperextendstk。mybatis。mapper。common。Mapper{ Select(valueselectu。mobile,u。passwordfromuseruwhereu。mobile{mobile}) Results ({Result(propertymobile,columnmobile), Result(propertypassword,columnpassword)}) UserfindUserByMobile(Param(mobile)Stringmobile); Insert(insertintouser(mobile,password)values({id},{mobile},{password})) 加入该注解可以保存对象后,查看对象插入id Options(useGeneratedKeystrue,keyPropertyid,keyColumnid) voidregist(Useruser); } service packagecom。keelon。job。Service; importcom。keelon。job。VO。ResultVO; importcom。keelon。job。mapper。UserMapper; importcom。keelon。job。pojo。User; importcom。keelon。job。util。ResultVOUtil; importorg。springframework。beans。factory。annotation。Autowired; importorg。springframework。stereotype。Service; Service publicclassUserService{ Autowired privateUserMapperuserMapper; 注册 paramuser参数封装 returnResult publicResultVOregist(Useruser){ ResultVOresultVOnewResultVO(); try{ UserexistUseruserMapper。findUserByMobile(user。getMobile()); if(existUser!null){ 如果用户名已存在 resultVOResultVOUtil。error(1,用户名已经存在); }else{ userMapper。insertUser(user); resultVOResultVOUtil。error(0,注册成功); resultVO。setData(user); } }catch(Exceptione){ } returnresultVO; } 登录 paramuser用户名和密码 returnResult publicResultVOlogin(Useruser){ ResultVOresultVOnewResultVO(); try{ LonguserIduserMapper。login(user); if(userIdnull){ resultVOResultVOUtil。error(1,用户名或者密码错误); }else{ resultVOResultVOUtil。success(user); } }catch(Exceptione){ } returnresultVO; } publicUsergetUser(Integerid){ returnuserMapper。findUserByID(id); } } controller packagecom。keelon。job。Controller; importcom。keelon。job。Service。UserService; importcom。keelon。job。VO。ResultVO; importcom。keelon。job。pojo。User; importorg。springframework。beans。factory。annotation。Autowired; importorg。springframework。web。bind。annotation。PostMapping; importorg。springframework。web。bind。annotation。RequestMapping; importorg。springframework。web。bind。annotation。RequestParam; importorg。springframework。web。bind。annotation。RestController; RestController RequestMapping(user) publicclassUserController{ Autowired privateUserServiceuserService; PostMapping(regist) publicResultVOregister(RequestParam(mobile)Stringmobile,RequestParam(password) Stringpassword,RequestParam(code)Stringcode){ UserusernewUser(); user。setPassword(password); IntegeranewInteger(mobile); user。setMobile(mobile); returnuserService。regist(user); } } 这样我们就完成一个接口的编写了。运行application。java打开postman测试一下。是不是soeasy呢。