跳至主要内容

Spring Boot

在 ChatGPT 中打开

Spring Boot 是构建 Java 应用的热门选择,提供了依赖注入、自动配置和嵌入式服务器模型。使用 Spring Boot 和 webforJ 时,您可以通过构造函数注入将服务、存储库和其他 Spring 管理的 Bean 直接注入到您的 UI 组件中。

当您使用 Spring Boot 和 webforJ 时,您的应用以可执行 JAR 的形式运行,其中嵌入了 Tomcat 服务器,而不是将 WAR 文件部署到外部应用服务器。这种打包模型简化了部署,并与云原生部署实践保持一致。webforJ 的组件模型和路由与 Spring 的应用上下文一起工作,以管理依赖关系和配置。

创建 Spring Boot 应用

您可以通过图形化的 startforJ 工具或 Maven 命令行有两种方式创建一个新的 webforJ 应用。

选项 1:使用 startforJ

创建一个新的 webforJ 应用的最简单方法是 startforJ,该工具基于选择的 webforJ 原型生成一个最小的启动项目。此启动项目包含所有必需的依赖项、配置文件和预制的布局,因此您可以立即在其基础上进行构建。

当您使用 startforJ 创建应用时,您可以通过提供以下信息来进行自定义:

  • 基础项目元数据(应用名称、组 ID、构件 ID)
  • webforJ 版本和 Java 版本
  • 主题颜色和图标
  • 原型
  • Flavor - 选择 webforJ Spring 以创建 Spring Boot 项目

使用这些信息,startforJ 将从您选择的原型创建一个配置为 Spring Boot 的基本项目。 您可以选择将项目下载为 ZIP 文件或直接发布到 GitHub。

选项 2:使用命令行

如果您更喜欢使用命令行,可以直接使用官方 webforJ 原型生成一个 Spring Boot webforJ 项目:

mvn -B archetype:generate \
-DarchetypeGroupId=com.webforj \
-DarchetypeArtifactId=webforj-archetype-hello-world \
-DarchetypeVersion=LATEST \
-DgroupId=org.example \
-DartifactId=my-app \
-Dversion=1.0-SNAPSHOT \
-Dflavor=webforj-spring

flavor 参数告知原型生成一个 Spring Boot 项目,而不是标准的 webforJ 项目。

这将创建一个完整的 Spring Boot 项目,包含:

  • Spring Boot 父 POM 配置
  • webforJ Spring Boot 启动器依赖项
  • 带有 @SpringBootApplication@Routify 的主应用类
  • 示例视图
  • Spring 和 webforJ 的配置文件

将 Spring Boot 添加到现有项目

如果您有一个现有的 webforJ 应用,可以通过修改项目配置来添加 Spring Boot。此过程涉及更新 Maven 配置、添加 Spring 依赖项并转换主应用类。

仅限现有项目

如果您是从头开始创建新项目,请跳过此部分。本指南假设 webforJ 版本 25.11 或更高

第一步:更新 Maven 配置

对您的 POM 文件进行如下更改:

  1. 将打包类型从 WAR 更改为 JAR:

    pom.xml
    <packaging>jar</packaging>
  2. 设置 Spring Boot 为父 POM:

    pom.xml
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.3</version>
    <relativePath/>
    </parent>
  3. 移除任何与 WAR 相关的配置,例如:

    • maven-war-plugin
    • webapp 目录引用
    • web.xml 相关配置

如果您已经有一个父 POM,您需要改为导入 Spring Boot 物料清单(BOM):

pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.5.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

第二步:添加 Spring 依赖项

将 webforJ Spring Boot 启动器添加到您的依赖项中:

webforJ 25.11+ 简化

webforJ 版本 25.11 开始,webforj-spring-boot-starter 包括所有核心 webforJ 依赖项的传递性依赖。您不再需要显式添加 com.webforj:webforj 依赖项。

对于 25.11 之前的版本,您必须分别包括这两个依赖项。

对于 webforJ 25.11 及更高版本:

pom.xml
<dependencies>
<!-- 添加 Spring Boot 启动器(包含 webforJ 的传递依赖) -->
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj-spring-boot-starter</artifactId>
<version>${webforj.version}</version>
</dependency>

<!-- 添加 devtools -->
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj-spring-devtools</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

对于 25.11 之前的版本:

pom.xml
<dependencies>
<!-- 显式添加 webforJ 依赖 -->
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj</artifactId>
<version>${webforj.version}</version>
</dependency>

<!-- 添加 Spring Boot 启动器 -->
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj-spring-boot-starter</artifactId>
<version>${webforj.version}</version>
</dependency>

<!-- 添加 devtools -->
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj-spring-devtools</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
webforJ DevTools 以实现自动浏览器刷新

webforj-spring-devtools 依赖扩展了 Spring DevTools,实现了自动浏览器刷新。当您在 IDE 中保存更改时,浏览器会自动重载,无需手动干预。有关配置详细信息,请参阅 Spring DevTools 指南。

第三步:更新构建插件

用 Spring Boot Maven 插件替换 Jetty 插件。移除任何现有的 Jetty 配置并添加:

pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeDevtools>true</excludeDevtools>
</configuration>
</plugin>
</plugins>
</build>

第四步:转换您的应用类

通过添加必要的 Spring 注释和主方法,将您的主 App 类转换为 Spring Boot 应用:

Application.java
package com.example;

import com.webforj.App;
import com.webforj.annotation.Routify;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@Routify(packages = "com.example.views")
public class Application extends App {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

// 如果您有现有的 run() 方法,请保留
@Override
public void run() throws WebforjException {
// 您现有的初始化代码
}
}

@SpringBootApplication 注释启用 Spring 的自动配置和组件扫描。 @Routify 注释保持不变,继续扫描您的视图包以获取路由。

第五步:添加 Spring 配置

src/main/resources 中创建 application.properties

application.properties
# 应用入口点的全名
webforj.entry = org.example.Application

# 应用名称
spring.application.name=Hello World Spring

# 服务器配置
server.port=8080
server.shutdown=immediate

# webforJ DevTools 配置
spring.devtools.livereload.enabled=false
webforj.devtools.livereload.enabled=true
webforj.devtools.livereload.static-resources-enabled=true

运行 Spring Boot 应用

一旦配置完成,使用以下命令运行您的应用:

mvn spring-boot:run

该应用将在端口 8080 上以嵌入的 Tomcat 服务器启动。您现有的 webforJ 视图和路由将照常工作,但现在您可以注入 Spring Bean 并使用 Spring 功能。

配置

使用 src/main/resources 中的 application.properties 文件来配置您的应用。有关 webforJ 配置属性的信息,请参阅 属性配置

以下 webforJ application.properties 设置特定于 Spring:

属性类型描述默认
webforj.servlet-mapping字符串webforJ servlet 的 URL 映射模式。/*
webforj.exclude-urls列表这些 URL 模式在映射到根时不应由 webforJ 处理。当 webforJ 映射到根上下文 (/*) 时,这些 URL 模式将被排除在 webforJ 处理之外,并可以由 Spring MVC 控制器处理。这允许 REST 端点和其他 Spring MVC 映射与 webforJ 路由共存。[]

配置差异

当您切换到 Spring Boot 时,几个配置方面会发生变化:

方面标准 webforJSpring Boot webforJ
打包WAR 文件可执行 JAR
服务器外部(Jetty、Tomcat)嵌入式 Tomcat
运行命令mvn jetty:runmvn spring-boot:run
主配置webforj.confapplication.properties + webforj.conf
配置文件webforj-dev.confwebforj-prod.confSpring 配置文件,格式为 application-{profile}.properties
端口配置在插件配置中在属性中 server.port