当前位置: 首页> 科技> 名企 > 卖网站赚钱吗_免费流程图制作网站_新手网络推广怎么干_网站seo方案

卖网站赚钱吗_免费流程图制作网站_新手网络推广怎么干_网站seo方案

时间:2025/8/13 5:15:03来源:https://blog.csdn.net/llg3189609554/article/details/147123976 浏览次数:0次
卖网站赚钱吗_免费流程图制作网站_新手网络推广怎么干_网站seo方案

Springboot整合JAVAFX

实体与VO设计

pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.elitedatai</groupId><artifactId>javafxTest</artifactId><version>1.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.2</version><relativePath/> <!-- lookup parent from repository --></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><javafx.version>21</javafx.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency><!-- javaFX --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>${javafx.version}</version></dependency><dependency><groupId>org.openjfx</groupId><artifactId>javafx-fxml</artifactId><version>${javafx.version}</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin><!-- JavaFX Maven Plugin --><plugin><groupId>org.openjfx</groupId><artifactId>javafx-maven-plugin</artifactId><version>0.0.8</version><configuration><mainClass>com.elitedatai.MainApp</mainClass></configuration></plugin></plugins></build></project>

实体类设计:

package com.elitedatai.model;import jakarta.persistence.*;
import lombok.Data;import java.time.LocalDateTime;/*** @author llg* @slogan 致敬大师,致敬未来的你* @create 2025-04-10 15:57*/
@Data
@Table(name = "Work_Order")
@Entity
public class WorkOrder {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(nullable = false, length = 50)private String orderNo;          // 工单编号@Column(nullable = false, length = 100)private String productName;      // 产品名称@Column(nullable = false, length = 50)private String productCode;      // 产品编码@Column(nullable = false)private Integer plannedQuantity; // 计划数量@Column(nullable = false)private Integer completedQuantity = 0; // 已完成数量@Column(nullable = false)private LocalDateTime startTime; // 计划开始时间@Column(nullable = false)private LocalDateTime endTime;   // 计划结束时间@Enumerated(EnumType.STRING)@Column(nullable = false, length = 20)private OrderStatus status;      // 工单状态@Column(length = 500)private String remark;           // 备注// 工单状态枚举public enum OrderStatus {PENDING,        // 待开始IN_PROGRESS,    // 进行中PAUSED,         // 已暂停COMPLETED,      // 已完成CANCELLED       // 已取消}
}

VO类设计:

/*** 工单值对象 - 用于前后端数据传输* 这个类可以被Spring MVC和JavaFX共同使用*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class WorkOrderVO {private Long id;private String orderNo;private String productName;private String productCode;private Integer plannedQuantity;private Integer completedQuantity;private LocalDateTime startTime;private LocalDateTime endTime;private WorkOrder.OrderStatus status;private String remark;// 计算进度百分比public Double getProgress() {if (plannedQuantity == null || plannedQuantity == 0) {return 0.0;}return (completedQuantity.doubleValue()  / plannedQuantity.doubleValue())  * 100;}// 从实体类转换public static WorkOrderVO fromEntity(WorkOrder entity) {if (entity == null) return null;WorkOrderVO vo = new WorkOrderVO();vo.setId(entity.getId()); vo.setOrderNo(entity.getOrderNo()); vo.setProductName(entity.getProductName()); vo.setProductCode(entity.getProductCode()); vo.setPlannedQuantity(entity.getPlannedQuantity()); vo.setCompletedQuantity(entity.getCompletedQuantity()); vo.setStartTime(entity.getStartTime()); vo.setEndTime(entity.getEndTime()); vo.setStatus(entity.getStatus()); vo.setRemark(entity.getRemark()); return vo;}// 转换为实体类public WorkOrder toEntity() {WorkOrder entity = new WorkOrder();entity.setId(this.getId()); entity.setOrderNo(this.getOrderNo()); entity.setProductName(this.getProductName()); entity.setProductCode(this.getProductCode()); entity.setPlannedQuantity(this.getPlannedQuantity()); entity.setCompletedQuantity(this.getCompletedQuantity()); entity.setStartTime(this.getStartTime()); entity.setEndTime(this.getEndTime()); entity.setStatus(this.getStatus()); entity.setRemark(this.getRemark()); return entity;}
}

SpringBoot与JavaFX集成配置

JavaFX配置类 (JavaFXConfiguration.java)

package com.elitedatai.config;/*** @author llg* @slogan 致敬大师,致敬未来的你* @create 2025-04-10 15:47*/import javafx.application.Application;
import javafx.application.HostServices;
import javafx.application.Platform;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericApplicationContext;import java.util.function.Consumer;/*** JavaFX配置类,负责启动JavaFX应用并集成Spring上下文* 核心功能:* 1. 初始化Spring应用上下文* 2. 加载JavaFX主舞台(Stage)* 3. 管理两者生命周期*/
public class JavaFXConfiguration extends Application {// Spring应用上下文,用于依赖注入private ConfigurableApplicationContext context;// JavaFX根节点,所有UI组件的容器private Parent root;// Stage自定义配置回调函数private Consumer<Stage> stageConsumer;@Overridepublic void init() throws Exception {// // 创建Spring上下文初始化器,注册JavaFX核心对象ApplicationContextInitializer<GenericApplicationContext> initializer = ac -> {// 将JavaFX Application实例注册为Spring Beanac.registerBean(Application.class,  () -> JavaFXConfiguration.this);// 注册启动参数(命令行参数)ac.registerBean(Parameters.class,  this::getParameters);// 注册HostServices(用于打开网页等操作)ac.registerBean(HostServices.class,  this::getHostServices);};// 构建Spring应用(关键步骤)this.context  = new SpringApplicationBuilder().sources(com.elitedatai.Application.class)  // 指定SpringBoot主类.initializers(initializer)                  // 添加上文初始化器.run(getParameters().getRaw().toArray(new String[0])); // 传递启动参数}/*** JavaFX主入口(UI线程开始执行)* @param primaryStage 主舞台(相当于主窗口)*/@Overridepublic void start(Stage primaryStage) throws Exception {// 从Spring容器获取FXML加载配置FxmlViewConfiguration viewConfig = context.getBean(FxmlViewConfiguration.class);// 加载主视图(触发FXML文件的解析和控制器初始化)this.root  = viewConfig.mainView();// 创建场景图(Scene是UI组件的根容器)Scene scene = new Scene(root, 1200, 800);// 配置主舞台primaryStage.setScene(scene);           // 绑定场景到舞台primaryStage.setTitle(" 工厂MES上位机系统"); // 设置窗口标题primaryStage.centerOnScreen();           // 窗口居中显示// 执行自定义舞台配置(如果有)if (stageConsumer != null) {stageConsumer.accept(primaryStage);}// 显示窗口(至此UI可见)primaryStage.show();}/*** JavaFX停止方法(窗口关闭时调用)*/@Overridepublic void stop() throws Exception {// 关闭Spring应用上下文(触发@PreDestroy等生命周期回调)this.context.close();// 确保JavaFX平台完全退出Platform.exit();}/*** 设置舞台自定义配置器* @param stageConsumer 接收Stage对象的函数式接口*/public void setStageConsumer(Consumer<Stage> stageConsumer) {this.stageConsumer  = stageConsumer;}
}

FXML视图配置 (FxmlViewConfiguration.java)

package com.elitedatai.config;/*** @author llg* @slogan 致敬大师,致敬未来的你* @create 2025-04-10 15:48*/import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;import java.io.IOException;
import java.net.URL;/*** FXML视图配置类,负责加载FXML文件并注入Spring管理的控制器*/
@Component
public class FxmlViewConfiguration {private final ApplicationContext context;@Autowiredpublic FxmlViewConfiguration(ApplicationContext context) {this.context  = context;}/*** 加载主视图*/public Parent mainView() throws IOException {return loadView("/fxml/main.fxml");}/*** 加载工单管理视图*/public Parent workOrderView() throws IOException {return loadView("/fxml/work_order.fxml");}/*** 通用视图加载方法*/private Parent loadView(String fxmlPath) throws IOException {FXMLLoader loader = new FXMLLoader();URL resource = getClass().getResource(fxmlPath);loader.setLocation(resource);loader.setControllerFactory(context::getBean);  // 使用Spring管理的控制器return loader.load();}
}

服务层接口

我使用的是JPA框架,根据实体,写好实体相关仓库接口和业务层接口,直接贴代码:

/*** 工单服务类 - 业务逻辑处理*/
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class WorkOrderService {private final WorkOrderRepository workOrderRepository;private final ModelMapper modelMapper;/*** 创建工单*/@Transactionalpublic WorkOrderVO create(WorkOrderVO vo) {WorkOrder entity = vo.toEntity(); WorkOrder saved = workOrderRepository.save(entity); return WorkOrderVO.fromEntity(saved); }/*** 更新工单*/@Transactionalpublic WorkOrderVO update(WorkOrderVO vo) {WorkOrder existing = workOrderRepository.findById(vo.getId()) .orElseThrow(() -> new RuntimeException("工单不存在"));// 更新字段existing.setOrderNo(vo.getOrderNo()); existing.setProductName(vo.getProductName()); existing.setProductCode(vo.getProductCode()); existing.setPlannedQuantity(vo.getPlannedQuantity()); existing.setCompletedQuantity(vo.getCompletedQuantity()); existing.setStartTime(vo.getStartTime()); existing.setEndTime(vo.getEndTime()); existing.setStatus(vo.getStatus()); existing.setRemark(vo.getRemark()); WorkOrder updated = workOrderRepository.save(existing); return WorkOrderVO.fromEntity(updated); }/*** 获取所有工单*/public List<WorkOrderVO> findAll() {return workOrderRepository.findAll().stream() .map(WorkOrderVO::fromEntity).collect(Collectors.toList()); }/*** 分页查询工单*/public Page<WorkOrderVO> findAll(Pageable pageable) {return workOrderRepository.findAll(pageable) .map(WorkOrderVO::fromEntity);}/*** 根据ID获取工单*/public WorkOrderVO findById(Long id) {return workOrderRepository.findById(id) .map(WorkOrderVO::fromEntity).orElseThrow(() -> new RuntimeException("工单不存在"));}/*** 删除工单*/@Transactionalpublic void delete(Long id) {workOrderRepository.deleteById(id); }/*** 更新工单进度*/@Transactionalpublic WorkOrderVO updateProgress(Long id, Integer completed) {WorkOrder order = workOrderRepository.findById(id) .orElseThrow(() -> new RuntimeException("工单不存在"));order.setCompletedQuantity(completed); if (completed >= order.getPlannedQuantity())  {order.setStatus(WorkOrder.OrderStatus.COMPLETED); }WorkOrder updated = workOrderRepository.save(order); return WorkOrderVO.fromEntity(updated); }
}

控制层

javafx相关控制层

Main控制层:
package com.elitedatai.controller.fx;import com.elitedatai.config.FxmlViewConfiguration;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import org.springframework.stereotype.Controller;/*** 主界面控制器 - 负责管理主界面的导航和状态显示*/
@Controller
public class MainController {@FXML private StackPane contentPane;@FXML private Label statusLabel;private final FxmlViewConfiguration viewConfig;public MainController(FxmlViewConfiguration viewConfig) {this.viewConfig  = viewConfig;}/*** 初始化方法,FXML加载后自动调用*/@FXMLpublic void initialize() {// 默认加载工单管理视图showWorkOrderView();}/*** 显示工单管理视图*/@FXMLpublic void showWorkOrderView() {try {contentPane.getChildren().clear();contentPane.getChildren().add(viewConfig.workOrderView());updateStatus("工单管理视图已加载");} catch (Exception e) {updateStatus("加载工单视图失败: " + e.getMessage());e.printStackTrace();}}/*** 退出应用程序*/@FXMLpublic void handleExit() {javafx.application.Platform.exit();}/*** 更新状态栏信息*/private void updateStatus(String message) {statusLabel.setText(message);}
}
main.fxml:
<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?><BorderPane xmlns="http://javafx.com/javafx/17"  xmlns:fx="http://javafx.com/fxml/1"fx:controller="com.elitedatai.controller.fx.MainController"><top><MenuBar BorderPane.alignment="CENTER"><menus><Menu text="文件"><items><MenuItem text="退出" onAction="#handleExit" /></items></Menu><Menu text="工单管理"><items><MenuItem text="工单列表" onAction="#showWorkOrderView" /></items></Menu><Menu text="帮助"><items><MenuItem text="关于" /></items></Menu></menus></MenuBar></top><center><StackPane fx:id="contentPane" /></center><bottom><HBox alignment="CENTER" spacing="10" style="-fx-background-color: #f0f0f0; -fx-padding: 5;"><Label text="工厂MES上位机系统" /><Label text="版本: 1.0.0" /><Label fx:id="statusLabel" text="就绪" /></HBox></bottom>
</BorderPane>
WorkOrderController:
package com.elitedatai.controller.fx;import com.elitedatai.model.Test;
import com.elitedatai.service.WorkOrderService;
import com.elitedatai.vo.TestVO;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;import java.time.LocalDateTime;
import java.util.List;/*** JavaFX工单控制器*/
@Controller
@RequiredArgsConstructor
public class WorkOrderController {private final WorkOrderService workOrderService;// FXML注入的UI组件@FXML private TableView<TestVO> workOrderTable;@FXML private TableColumn<TestVO, String> orderNoColumn;@FXML private TableColumn<TestVO, String> productNameColumn;@FXML private TableColumn<TestVO, Integer> plannedQuantityColumn;@FXML private TableColumn<TestVO, Integer> completedQuantityColumn;@FXML private TableColumn<TestVO, String> progressColumn;@FXML private TableColumn<TestVO, String> statusColumn;@FXML private TextField orderNoField;@FXML private TextField productNameField;@FXML private TextField productCodeField;@FXML private TextField plannedQuantityField;@FXML private DatePicker startDatePicker;@FXML private DatePicker endDatePicker;@FXML private ComboBox<String> statusComboBox;@FXML private TextArea remarkArea;private final ObservableList<TestVO> workOrderData = FXCollections.observableArrayList();/*** 初始化方法,由FXML加载器调用*/@FXMLpublic void initialize() {// 配置表格列orderNoColumn.setCellValueFactory(new PropertyValueFactory<>("orderNo"));productNameColumn.setCellValueFactory(new  PropertyValueFactory<>("productName"));plannedQuantityColumn.setCellValueFactory(new  PropertyValueFactory<>("plannedQuantity"));completedQuantityColumn.setCellValueFactory(new  PropertyValueFactory<>("completedQuantity"));progressColumn.setCellValueFactory(cellData  -> {double progress = cellData.getValue().getProgress();return new javafx.beans.property.SimpleStringProperty(String.format("%.2f%%",  progress));});statusColumn.setCellValueFactory(new  PropertyValueFactory<>("status"));// 绑定数据workOrderTable.setItems(workOrderData);// 加载数据refreshData();// 配置状态下拉框statusComboBox.getItems().addAll("PENDING", "IN_PROGRESS", "PAUSED", "COMPLETED", "CANCELLED");}/*** 刷新表格数据*/private void refreshData() {List<TestVO> orders = workOrderService.findAll();workOrderData.clear();workOrderData.addAll(orders);}/*** 创建新工单*/@FXMLprivate void handleCreate() {try {TestVO vo = new TestVO();vo.setOrderNo(orderNoField.getText());vo.setProductName(productNameField.getText());vo.setProductCode(productCodeField.getText());vo.setPlannedQuantity(Integer.parseInt(plannedQuantityField.getText()));vo.setCompletedQuantity(0);vo.setStartTime(LocalDateTime.from(startDatePicker.getValue().atStartOfDay()));vo.setEndTime(LocalDateTime.from(endDatePicker.getValue().atStartOfDay()));vo.setStatus(Test.OrderStatus.valueOf(statusComboBox.getValue()));vo.setRemark(remarkArea.getText());workOrderService.create(vo);refreshData();clearFields();showAlert("成功", "工单创建成功", Alert.AlertType.INFORMATION);} catch (Exception e) {showAlert("错误", "创建工单失败: " + e.getMessage(),  Alert.AlertType.ERROR);}}/*** 更新工单进度*/@FXMLprivate void handleUpdateProgress() {TestVO selected = workOrderTable.getSelectionModel().getSelectedItem();if (selected == null) {showAlert("警告", "请先选择一条工单", Alert.AlertType.WARNING);return;}TextInputDialog dialog = new TextInputDialog(selected.getCompletedQuantity().toString());dialog.setTitle(" 更新进度");dialog.setHeaderText(" 请输入已完成数量");dialog.setContentText(" 数量:");dialog.showAndWait().ifPresent(completed  -> {try {int completedQty = Integer.parseInt(completed);workOrderService.updateProgress(selected.getId(),  completedQty);refreshData();showAlert("成功", "工单进度更新成功", Alert.AlertType.INFORMATION);} catch (NumberFormatException e) {showAlert("错误", "请输入有效的数字", Alert.AlertType.ERROR);} catch (Exception e) {showAlert("错误", "更新进度失败: " + e.getMessage(),  Alert.AlertType.ERROR);}});}/*** 显示警告对话框*/private void showAlert(String title, String message, Alert.AlertType type) {Alert alert = new Alert(type);alert.setTitle(title);alert.setHeaderText(null);alert.setContentText(message);alert.showAndWait();}/*** 清空输入字段*/private void clearFields() {orderNoField.clear();productNameField.clear();productCodeField.clear();plannedQuantityField.clear();startDatePicker.setValue(null);endDatePicker.setValue(null);statusComboBox.setValue(null);remarkArea.clear();}
}
workorder.fxml:
<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?><VBox xmlns="http://javafx.com/javafx/17"  xmlns:fx="http://javafx.com/fxml/1"fx:controller="com.elitedatai.controller.fx.WorkOrderController"  spacing="10"><Label text="工单管理" style="-fx-font-size: 16pt; -fx-font-weight: bold;" /><HBox spacing="10" alignment="CENTER_LEFT"><Label text="工单编号:" /><TextField fx:id="orderNoField" promptText="请输入工单编号" /><Label text="产品名称:" /><TextField fx:id="productNameField" promptText="请输入产品名称" /><Label text="产品编码:" /><TextField fx:id="productCodeField" promptText="请输入产品编码" /></HBox><HBox spacing="10" alignment="CENTER_LEFT"><Label text="计划数量:" /><TextField fx:id="plannedQuantityField" promptText="请输入计划数量" /><Label text="开始日期:" /><DatePicker fx:id="startDatePicker" /><Label text="结束日期:" /><DatePicker fx:id="endDatePicker" /><Label text="状态:" /><ComboBox fx:id="statusComboBox" promptText="选择状态" /></HBox><HBox spacing="10" alignment="CENTER_LEFT"><Label text="备注:" /><TextArea fx:id="remarkArea" promptText="请输入备注信息" wrapText="true" prefRowCount="2" /></HBox><HBox spacing="10"><Button text="创建工单" onAction="#handleCreate" style="-fx-base: #4CAF50;" /><Button text="更新进度" onAction="#handleUpdateProgress" style="-fx-base: #2196F3;" /></HBox><TableView fx:id="workOrderTable" prefHeight="400"><columns><TableColumn text="工单编号" fx:id="orderNoColumn" prefWidth="120" /><TableColumn text="产品名称" fx:id="productNameColumn" prefWidth="150" /><TableColumn text="计划数量" fx:id="plannedQuantityColumn" prefWidth="80" /><TableColumn text="完成数量" fx:id="completedQuantityColumn" prefWidth="80" /><TableColumn text="进度" fx:id="progressColumn" prefWidth="80" /><TableColumn text="状态" fx:id="statusColumn" prefWidth="100" /></columns></TableView>
</VBox>

web控制层

package com.elitedatai.controller.web;/*** @author llg* @slogan 致敬大师,致敬未来的你* @create 2025-04-10 16:19*/import com.elitedatai.service.WorkOrderService;
import com.elitedatai.vo.TestVO;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;/*** 工单REST API控制器*/
@RestController
@RequestMapping("/api/work-orders")
@RequiredArgsConstructor
public class WorkOrderApiController {private final WorkOrderService workOrderService;/*** 获取所有工单*/@GetMappingpublic ResponseEntity<List<TestVO>> findAll() {return ResponseEntity.ok(workOrderService.findAll());}/*** 分页查询工单*/@GetMapping("/page")public ResponseEntity<Page<TestVO>> findAll(Pageable pageable) {return ResponseEntity.ok(workOrderService.findAll(pageable));}/*** 根据ID获取工单*/@GetMapping("/{id}")public ResponseEntity<TestVO> findById(@PathVariable Long id) {return ResponseEntity.ok(workOrderService.findById(id));}/*** 创建工单*/@PostMappingpublic ResponseEntity<TestVO> create(@RequestBody TestVO vo) {return ResponseEntity.ok(workOrderService.create(vo));}/*** 更新工单*/@PutMapping("/{id}")public ResponseEntity<TestVO> update(@PathVariable Long id, @RequestBody TestVO vo) {vo.setId(id);return ResponseEntity.ok(workOrderService.update(vo));}/*** 删除工单*/@DeleteMapping("/{id}")public ResponseEntity<Void> delete(@PathVariable Long id) {workOrderService.delete(id);return ResponseEntity.noContent().build();}/*** 更新工单进度*/@PatchMapping("/{id}/progress")public ResponseEntity<TestVO> updateProgress(@PathVariable Long id,@RequestParam Integer completed) {return ResponseEntity.ok(workOrderService.updateProgress(id,  completed));}
}

启动类与主应用

SpringBoot主类 (Application.java)

package com.elitedatai;/*** @author llg* @slogan 致敬大师,致敬未来的你* @create 2025-04-10 16:12*/import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** SpringBoot主启动类*/
@SpringBootApplication
public class Application {public static void main(String[] args) {// 检查是否以JavaFX模式启动if (args.length  > 0 && args[0].equals("--javafx")) {com.elitedatai.MainApp.main(args);} else {SpringApplication.run(Application.class,  args);}}
}

JavaFX主类 (MainApp.java)

package com.elitedatai;import com.elitedatai.config.JavaFXConfiguration;
import javafx.application.Application;/*** JavaFX主启动类*/
public class MainApp {public static void main(String[] args) {// 启动JavaFX应用Application.launch(JavaFXConfiguration.class,  "--javafx");}
}

运行与部署

1. 运行应用

直接想启动web就运行web主类,想启动javafx就运行javafx主类

2.打包应用

创建可执行JAR:

mvn clean package

然后运行:

java -jar target/mes-upper-machine-1.0.0.jar  --javafx

或者作为Web应用运行:

java -jar target/mes-upper-machine-1.0.0.jar 

JavaFx在Springboot中的依赖关系如图:

关键字:卖网站赚钱吗_免费流程图制作网站_新手网络推广怎么干_网站seo方案

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: