一、为什么选择Spring BootSpring Boot是由Pivotal团队提供的全新框架,被很多业内资深人士认为是可能改变游戏规则的新项目。早期我们搭建一个SSH或者Spring Web应用,需要非常繁琐的步骤,比如配置web.xml,配置数据库连接,配置事务,配置日志,配置Tomcat,装配Bean,声明和配置切面等等等等,如果项目过大多人协作各种冗长啰嗦的配置让人烦不胜烦,这么多年下来,给人一种Java就是大型配置文件的感觉。 Spring Boot的设计目的是用来简化新Spring应用的初始搭建以及开发过程,吸引更多开发者的最大亮点之一是集成了自动配置的魔力。Spring Boot的四个主要新特性如下: 1、Spring Boot Starter:它将常用的依赖分组进行了整合, 将其合并到一个依赖中, 这样就可以一次性添加到项目的Maven或Gradle构建中;Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model, POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或某类功能。Spring Boot经过了足够的测试,确保引入的全部依赖都能相互兼容。这是一种解脱,只需指定起步依赖,不用担心自己需要维护哪些库,也不必担心它们的版本。 常见的搭建一个Spring Boot应用只要如下几步: 1、打开http://start./ 2、点击“Switch to the full version,选择Java版本,如1.8,选择好构建工具,如Maven或Gradle 4、点击Generate Project下载项目压缩包 5、解压后,使用eclipse或者intellij idea,导入项目即可 当然,对于经验丰富的老鸟,不需要打开网页再下载解压导入文件那么多步骤,通过Idea也可以一步一步构造Spring Boot项目。 二、工程结构官方生成的Spring Boot项目,默认结构说明: 1、src/main/java 程序开发以及主程序入口 src/main/java根目录下面,有如下Java类和包: 1、Application.java 应用程序入口,包括一个静态main方法,可以做一些框架配置,比如mybatis、swagger等 当然,我们需要参考成熟的项目结构或者根据个人经验来改造项目结构,本文的SpringBootDemo为了方便仅做简单调整,项目结构如下: 主要包说明: 公共模块 1、common:公共类,如枚举,常量、业务无关的通用公共实体等 2、util:常用实用的帮助类,如反射、字符串、集合、枚举、正则、缓存、队列等 3、config:自定义的配置项,可从配置文件读取 表现层 1、controller:负责页面访问控制,对外暴露Rest API接口 数据访问层 1、domain:数据对象实体DO,通常和数据表、视图或其他业务对象一一对应 2、dao:数据访问对象,本文demo选择比较熟悉的mybatis作为ORM工具 业务逻辑层 1、service:服务 contract是接口,impl是服务实现 2、entity:实体 vo是服务可对外公开的实体;dto是数据传输对象,可在服务间传递;qo:查询对象,可以认为是查询条件的封装 本文demo没有写dto和qo示例,很多中小型项目,entity其实是非常混乱的,实体设计和分层抽象有问题,有时候直接影响到业务逻辑复杂程度。 关于工程结构,尤其是应用分层和领域实体抽象(数据访问对象DO和显示层对象VO等),强烈推荐大家参考<<阿里巴巴Java开发手册>>终极版本的工程结构一章。 三、MyBatis使用 Maven依赖: ![]() 数据库驱动: MySQL: ![]() SQLServer: ![]() 隆重公告,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库,本文的demo选择的是SQLServer,主要是MySQL很多人都写了,资料太充足,不如试试不同的风格,而且我在前厂写的第一个线上Spring Boot应用也是访问SQLServer,demo就哪个好举例就用哪个了。 配置文件中的配置: ![]() Mapper配置: ![]() 最后,在应用程序入口,添加一行注解: // mapper 接口类扫描包配置 @MapperScan("com.power.demo.dao") public class Application { } 本文demo只提供了简单的CRUD,但是常见的开发还有很多东西要写。比如: 如何做多库配置,如何动态拼接执行复杂SQL,如何批量插入,如何拿到运行时SQL语句,如何使用存储过程,如何进行数据缓存、如何使用事务、如何级联查询等。 这些遗留内容希望有心的你慢慢去发掘尝试了。 推荐MyBatis代码生成器:MyBatis Generator 四、API文档描述 使用应用广泛的Swagger,生成API文档。 Maven中添加依赖: ![]() 需要在应用程序入口Application里面加一行注解: @EnableSwagger2 public class Application { } 不要忘了Api说明和实体说明配置,demo提供了完整示例。 五、单元测试 使用Junit进行单元测试 ![]() 如果需要单元测试的方法需要配置文件,那么test下也要有resources目录用于存放资源文件。 本文demo提供了完整的各层单元测试方法,大家可以参考下。 总结:使用Spring Boot全家桶,你可以快速上手开发Java的REST接口应用,配合Java8+的相关新特性,写Java也越来越省心(虽然Java8的lambda比较难受,Checked Exception层层感染有点受不了,Date非常不好用-_-),听说Java10要有var,估计还可以少写很多代码,而且VS也要支持Java了(不是J#),作为有丰富开发经验的.NET开发者,也就更加有尝试的冲动了。 最后提供demo下载。
参考: <<阿里巴巴Java开发手册>> <<Spring in Action>> <<Spring Boot in Action>> https://docs./spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ |
|
来自: 米老鼠的世界 > 《Java_Spring》