讨论方法

Spring 团队创建了两种创建新项目的方式和一种修改现有项目的方式。我们发现最佳方法是使用 Spring Initializr 生成项目,然后使用 boot add 命令向其添加内容。以下部分解释了为何这是最佳方法。

Initializr

创建新的 Spring Boot 项目的常用方法是使用 Initializr,网址是 start.spring.io。Spring CLI 提供了一个命令与 Initializr 进行交互。参见 Initializr,但它也提供了创建新项目的其他方法,并解决了 day-2(即为现有项目添加代码或配置)的使用场景。

使用 Boot New

boot new 命令允许您从源代码仓库中的现有项目创建一个新项目。boot new 命令允许您指定少量选项来自定义项目以满足您的需求(例如更改包名),但它不像 Initializr 那样提供依赖项的选择。

boot new 的方法是克隆一个现有仓库,该仓库除了包含您项目的依赖项外,还包含完全可工作的代码和配置。这种方法使您或您的团队成员能够轻松创建多种项目原型,因为它们是源代码仓库中的常规 Spring 项目,可以通过 CI 流程验证其工作正常。有关更多信息,请参见 创建新项目

使用 Boot Add

然后,在初始项目创建后,您可以根据需要使用 boot add 命令添加额外的代码和依赖项。此命令会智能地将一个现有项目合并到您当前的项目中。与 boot new 命令一样,现有项目是源代码仓库中的常规 Spring 项目,可以编译并通过 CI 流程验证其工作正常。有关更多信息,请参见 "boot add" 指南

模板化代码和配置

另外,您可以使用用户定义命令添加额外的代码和依赖项,这些命令依赖于使用模板引擎来创建代码和配置。有关更多信息,请参见 用户定义命令指南。使用模板引擎并方便用户贡献调用这些模板的命令的方法受到了 hygen 项目的启发。

结论

虽然添加额外代码和依赖项的两种方法都有各自的使用场景,但在从头创建新项目时,我们发现从可工作的项目开始会更容易。您不仅可以获得公司批准所需的依赖项,还可以获得代码、配置和测试。这是一个起点,它消除了选择依赖项和从教程复制代码的繁琐工作和不确定性。通常,那些教程非常基础,不遵循常见的最佳实践约定,并且没有测试。

使用模板化创建新项目可能是一个挑战。在我们看来,为一个新项目模板化 Java 代码比从现有可工作项目克隆新项目更困难。创建模板、运行模板然后编译生成的项目的循环是脆弱的。然而,我们发现创建较小的代码块和配置更适合模板化方法——例如,使用 spring controller new 向当前项目添加一个控制器,或者使用 spring feature new 添加一些文件,例如带有 @Controller@Service@Repository 注解的类。

您的体验可能有所不同,但这两种代码生成方式都在 Spring CLI 中可用。