Spring Boot 教程

Spring Boot 项目结构与约定

本章节将介绍 Spring Boot 项目的基础结构,以及 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(存放测试资源)

Spring Boot 约定

约定优于配置

约定优于配置(Convention Over Configuration),也称作按约定编程,它是一种软件设计范式。目的在于减少软件开发人员所需要做出的决定的数量,从而获得简单的好处,而又不失去其中的灵活性。开发人员仅仅需要规定应用中不符合约定的部分。例如,如果模型中有个名为 Sale 的类,数据库中对应的表就会默认命名为 sales。只有在偏离这一约定的时候,比如将该表命名为“products_sold”,才会需要写有关这个名字的配置。如果所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。

比如平时架构师搭建项目就是限制软件开发随便写代码,制定出一套规范,让开发人员按统一的要求进行开发编码测试之类的,这样就加强了开发效率与审查代码效率。所以说写代码的时候就需要按要求命名,这样统一规范的代码就有良好的可读性与维护性了。

Spring Boot 中的约定优于配置

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 负责页面访问控制

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号