本章节将介绍 Spring Boot 项目的基础结构,以及 Spring Boot 的约定。读者按照标准的 Spring Boot 项目结构、和 Spring Boot 约定开发项目,可以避免一些常见错误、提高项目的可读性。其他任何有 Spring Boot 开发经验的人,都可以轻松入手你的项目,而不需要提供很多文档来说明你项目的结构等信息。从另一方面说,这也提高了开发效率。
我们还是使用前面创建的“Spring Boot Hello”项目来介绍项目结构。如下图:
上面项目是一个标准的 maven 项目,有很多读者已经对 maven 非常熟悉,但还是打算简单介绍一下:
+ src(源代码目录) + main(存放源代码) + java(存放 java 代码) - SpringbootHelloApplication (Spring Boot启动类,该类拥有 main 方法) + resources(存放资源) - static(存放静态资源,如:图片、视频、音频等) - template(存放模板文件,如:ftl-freemarker模板等) - application.properties(Spring Boot 配置文件,可以为 .properties 或 .yml 类型) + test (存放测试代码) + java(存放 Java 测试代码) + resources(存放测试资源)
约定优于配置(Convention Over Configuration),也称作按约定编程,它是一种软件设计范式。目的在于减少软件开发人员所需要做出的决定的数量,从而获得简单的好处,而又不失去其中的灵活性。开发人员仅仅需要规定应用中不符合约定的部分。例如,如果模型中有个名为 Sale 的类,数据库中对应的表就会默认命名为 sales。只有在偏离这一约定的时候,比如将该表命名为“products_sold”,才会需要写有关这个名字的配置。如果所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。
比如平时架构师搭建项目就是限制软件开发随便写代码,制定出一套规范,让开发人员按统一的要求进行开发编码测试之类的,这样就加强了开发效率与审查代码效率。所以说写代码的时候就需要按要求命名,这样统一规范的代码就有良好的可读性与维护性了。
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 采用约定优于配置的方式,大量的减少了配置文件的使用。
spring-boot-starter-web 包含了 Spring MVC 的相关依赖(包括 Json 支持的 Jackson 和数据校验的 Hibernate Validator)和一个内置的 Tomcat 容器,这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。而在部署阶段也可以打成 WAR 包放到生产环境运行。
通常,src/main/java 程序包推荐结构如下:
com.example.myproject +- Application.java(启动类) | +- domain(实体) | +- Customer.java | +- CustomerRepository.java | +- service(服务,业务逻辑) | +- CustomerService.java | +- controller(控制器) | +- CustomerController.java
其中:
Application.java 建议放到跟目录下面,主要用于做一些框架配置
domain目录主要用于实体(Entity)与数据访问层(Repository)
service 层主要是业务类代码
controller 负责页面访问控制