【发布时间】:2021-03-10 14:45:38
【问题描述】:
我最近一直在学习数据库的工作原理以及如何编写可以操作数据库的服务。所以情况如下:
我有一个 MySQL 数据库在 localhost 服务器 (XAMPP) 上运行。访问数据库很简单:localhost:3036/my_database。
除此之外,我写了一个Java Spring服务(实际上只是从https://github.com/spring-guides/gs-accessing-data-mysql.git复制了示例),它应该是一个接受curl请求并基于它们来操作数据库的接口。到目前为止,一切都很好。一切正常。问题是这个服务也在一个 localhost 地址上运行:localhost:8080。
我想在我的 Spring 服务中实现 MySQL 服务器,这样我就可以运行该服务,并且数据库将运行并托管在同一个端口上。数据应该只能通过这个服务获得,所以我不希望额外的独立 MySQL 服务器在不同的 localhost 端口上运行。 归根结底,我想生成一个可执行的 jar 文件,该文件在运行时为我提供 localhost 地址上的服务并无缝处理本地存储的数据库。
编辑: 我不希望我的数据库独立于服务。我不想负责运行它并连接到服务。我正在寻找类似于以下答案中提到的@jr593,嵌入式数据库。但是这样的数据库是否可以将数据本地保存在运行服务的设备上 beetwen 服务运行?
【问题讨论】:
-
如果我正确理解你的问题,你不能有 2 个服务在同一个端口上监听
-
XAMPP 有 mariadb,通常运行在 3306 端口! 不太清楚你的意思 访问数据库很简单:localhost:3036/my_database 你是否安装了除
phpMyAdmin之外的其他运行在端口 3036 上执行类似phpMyAdmin的操作 -
好吧,你可以在你的 spring 应用程序中运行一个嵌入式数据库,但你仍然需要以某种方式持久化数据,否则它会在运行之间丢失。
-
很难说出你真正想要达到的目标。 MySQL 是一个网络服务器。每个客户端都通过配置的端口进行连接。您的 Spring 应用程序是一个 Web 应用程序,不能使用相同的端口。在生产环境中,数据库端口通常被阻塞,不允许外部直接访问数据库端口。客户端只能连接到 webapplication 端口。
-
我认为 spring 应用程序中的嵌入式数据库是我正在寻找的解决方案。谢谢@jr593。你们所有人以及你们的 cmets。
标签: java mysql spring spring-boot