如何使用Spring框架将Java控制台应用程序转换为全堆栈web应用程序?
所以我想转换的项目是https://github.com/zhongjis/keyword_search_engine_xlsm
这个程序打算建立一个基于用户输入文件(xlsm)的搜索引擎。它首先从XLSM(excel)文件中提取内容,并将其存储到数据库中。在建立数据库的同时,该程序还将计算一些特殊数字,如td idf,这些数字将在以后用于结果排名
当前使用的技术:
- 格拉德尔
- 爪哇13
- MongoDB
我想做什么
- 将此控制台应用程序转换为使用Spring框架的全堆栈web应用程序。这意味着我想添加一个GUI李>
- 在这个转换过程中,我试图尽可能多地保留原始代码。对我来说,可以修改它们以适应MVC设计李>
- 总之,我想让我当前的应用程序在Spring框架上运行。只有控制台输出才可以李>
我的问题是什么
- 尽管我对Spring框架做了很多研究(尤其是Spring boot)。但我仍在为实现该框架首先应该做什么而挣扎我想要一些关于如何开始的建议(或者我应该对我原来的项目做什么改变)。我从互联网上学到的只是添加各种依赖项来构建。格雷德尔。但我仍然不知道下一步该怎么办我应该从头开始一个新的Web应用程序,还是尝试转换当前的应用程序李>
谢谢你
- 我尽了最大的努力来补充细节。然而,这篇文章在某些方面可能仍然含糊不清或令人困惑,需要一些澄清。请随时让我知道,我非常愿意这么做:)
# 1 楼答案
您似乎想要创建一个Web应用程序
最简单的入门方法是使用Spring Boot,它是Spring的“固执己见”版本,这意味着它使用智能默认值。应该首先使用初始值设定项生成项目:https://start.spring.io/。不断生成和测试,直到你得到你想要的
最简单的方法是构建一个可执行的JAR,它将包含您的web服务器,并且可以在您拥有Java的任何地方运行。这是上面初始化器站点上的默认设置。我的建议是:接受Spring Boot的默认设置,直到你知道自己在做什么
图形用户界面: 最简单的方法是使用Thymeleaf模板来显示HTML
控制器: 了解如何编写基本控制器以返回Thymeleaf模板。最简单的开始方式是向控制器发送标准HTML
医生 Spring的一大优点是有充足的文档。 见:https://spring.io/guides/gs/serving-web-content/ 和:https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html
# 2 楼答案
我建议您从Spring Initializer开始引导一个完全工作的Spring启动应用程序。或者,您可以使用JHipster(https://www.jhipster.tech/),它将为您创建一个Spring Boot应用程序和一个您可能更喜欢的前端
创建基础应用程序
https://start.spring.io/
选择需要这样一个MongoDB的依赖项:
构建基本组件
因此,Spring Boot应用程序中的基本流程是控制器->;服务层->;存储库
控制器将允许您创建带有
@RestController
注释的REST端点: https://spring.io/guides/gs/rest-service/然后将您的业务逻辑从util包放入一个带有
@Service
注释的服务类中。 https://medium.com/stackavenue/why-to-use-service-layer-in-spring-mvc-5f4fc52643c0您将使用
@Autowired
注释将服务层自动连接到控制器中然后为数据库操作创建Spring存储库: https://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html
然后
@Autowire
将存储库导入服务层总之,整个流程是前端(Angular、ReactJS等)对Spring应用程序进行HTTP调用,由控制器处理,控制器调用服务层,服务层调用存储库来执行数据库操作
构建前端
你可以用Angular。很多前端开发人员更喜欢React,但对于新用户来说,Angular是一个更全面的框架https://cli.angular.io/
安装npm(https://www.npmjs.com/get-npm)
然后执行以下操作以启动并运行一个功能齐全的Angular应用程序:
然后您可以使用Angular
HttpClient
调用Spring引导服务:https://angular.io/guide/http这个repo已经有几年的历史了,但它包含一个完整的堆栈Angular/Spring启动应用程序,您可以查看它以供参考:https://github.com/anataliocs/Exercise-files-full-stack-app-angular-spring-boot
你也可以使用Thymeleaf(https://spring.io/guides/gs/serving-web-content/),但大多数现代的全堆栈web应用程序使用单独的前端应用程序,如Angular、React(https://reactjs.org/)、Vue。js(https://vuejs.org/)等
JHipster
Jhipster将完成所有这些,并为您连接一个完全工作的前端https://www.jhipster.tech/
课程
我也有关于在LinkedIn learning上构建全栈应用程序的完整课程,但完全公开,这不是一项免费服务,但有30天的试用期
# 3 楼答案
我建议与KevinB一样,使用SpringBoot/Thymeleaf实现简单的MVC风格应用程序,以尽量减少使用过多的技术堆栈
但在开始行动之前,请记住,将项目/应用程序迁移到新框架或体系结构中首先需要分解组件(源和目标,然后映射它们)
github项目使用MONGODB,您无需重新设置
基于功能,您可以通过两种方式进行迁移,即一次构建一个功能的所有后端和前端
或者先开发模拟rest端点,然后在spring boot中调用服务端点