跳至主要内容

Spring Boot

在 ChatGPT 中打开

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

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

创建Spring Boot应用

您有两种选择来创建一个新的webforJ应用程序与Spring Boot:使用图形化的startforJ工具或Maven命令行。

选项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或更高版本

步骤1:更新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>4.0.5</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>4.0.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

步骤2:添加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指南。

步骤3:更新构建插件

用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>

步骤4:转换您的应用类

通过添加必要的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注解保持不变,继续扫描您的视图包以获取路由。

步骤5:添加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 beans并使用Spring特性。

配置

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

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

属性类型描述默认值
webforj.servlet-mapping字符串webforJ servlet的URL映射模式。/*
webforj.exclude-urls列表不应由webforJ处理的URL模式,当映射到根时。 当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
端口配置在插件配置中properties中的server.port