全栈开发是一项复杂而令人兴奋的任务,涵盖了从前端到后端、数据库到可视化层、消息队列到文件存储的广泛领域。本文将带您深入探讨在Windows环境下进行全栈开发的过程,涵盖了Java全栈开发所需的关键技术和工具。无论您是初学者还是经验丰富的开发人员,本文都将为您提供有关如何准备开发环境、构建数据库层、开发搜索与可视化层、构建消息队列与文件存储层以及测试与部署应用程序的宝贵信息。
本文旨在向您展示如何在Windows环境下进行全栈开发,从Java开发环境的安装和配置开始,一直到API测试和应用程序部署。我们将介绍关键技术和工具,包括Java Development Kit (JDK)、IDE、Maven、Git、Docker、MongoDB、Redis、MySQL、Elasticsearch、RabbitMQ、MinIO、ApiPost和Postman等。通过这篇文章,您将学到如何构建一个强大的全栈应用程序,为您的开发之旅提供了有力的支持。
为了进行Java全栈开发,您需要首先安装Java Development Kit(JDK)。以下是在Windows上安装JDK的简要步骤:
bin
目录添加到系统PATH
中。友情链接:快速入门:使用 Spring Boot 构建 Web 应用程序
选择一个集成开发环境(IDE)来编写和调试Java代码。两个常见的选择是Eclipse和IntelliJ IDEA。
Maven是一个构建和项目管理工具,用于管理Java项目的依赖项和构建过程。
bin
目录添加到系统PATH
中。mvn -version
。Git是一种版本控制工具,用于管理源代码。
git --version
来验证Git是否正确安装。本文主要安装手段不是Docker,这里可以跳过
Docker可以用来轻松部署各种服务容器,包括MongoDB、Redis、MySQL等。
MongoDB是一个NoSQL数据库,适用于存储非结构化数据。
docker run -d -p 27017:27017 --name mongodb mongo
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDB Community Server Download
上面那个直接全部装到C盘,下面这个能选路径
以下是每个选项的一般含义:
完整安装: 这个选项会在您的计算机上安装所有程序功能和组件。它会占用最多的磁盘空间,但建议大多数用户选择这个选项,因为它提供了软件的全部功能,无需进行个别选择。
自定义安装: 这个选项允许您选择要安装的特定程序功能和组件,以及它们在计算机上的安装位置。这是为高级用户推荐的选项,他们可能有特定的偏好或需求,这样他们可以更精确地控制安装过程。
在您的情况下,如果您满意默认配置并希望安装所有功能,您可以选择"完整安装"。但是,如果您有特定的需求或只需要软件的某些组件,您可以选择"自定义安装",以根据您的需求进行安装。
此外,似乎Mongo Shell必须单独安装到Windows系统中。这意味着不论您选择"完整安装"还是"自定义安装",您可能需要单独下载并安装Mongo Shell。请确保按照提供的说明安装Mongo Shell,如果它是您安装的必要组件。
这里不要打勾!!!,我安装了一天都没装上,GUI下面的链接单独装
这是有关安装MongoDB Compass的选项。MongoDB Compass是官方的MongoDB图形用户界面工具。以下是您可以选择的操作:
通过点击"Install MongoDB Compass"按钮,您可以选择安装MongoDB Compass。这将自动下载并安装最新版本的MongoDB Compass到您的计算机上。
如果您想了解有关MongoDB Compass的更多信息,您可以点击"Learn more about MongoDB Compass here"链接,以访问 MongoDB 官方网站上的相关信息。
请根据您的需求选择适当的选项。如果您需要使用MongoDB Compass来管理MongoDB数据库,那么选择安装它可能是一个好主意。如果不需要,您可以选择取消安装。
MongoDB Compass Download (GUI)
点左下角这个>_MONGOSH
可展开终端
以下是一些常用的MongoDB命令,用于管理和查询MongoDB数据库:
当使用MongoDB的命令行客户端(mongo shell)时,您可以输入以下常用命令来与数据库进行交互:
连接到MongoDB:
mongo
数据库操作:
show dbs
use <db_name>
show dbs
介绍: 用于显示当前MongoDB服务器上的所有数据库列表,包括其大小。use
介绍: 切换到指定的数据库。如果数据库不存在,将会创建一个新的数据库。一旦切换成功,后续的操作将在该数据库中执行。集合(Collection)操作:
show collections
db.createCollection("collection_name")
db.collection_name.drop()
show collections
介绍: 显示当前数据库中的所有集合列表。db.createCollection("collection_name")
介绍: 用于创建一个新的集合。db.collection_name.drop()
介绍: 删除指定的集合及其所有文档。文档(Document)操作:
db.collection_name.insert({field1: value1, field2: value2})
db.collection_name.find()
db.collection_name.find({field: value})
db.collection_name.update({field: value}, {new_field: new_value})
db.collection_name.remove({field: value})
db.collection_name.insert({field1: value1, field2: value2})
介绍: 向指定的集合中插入新的文档。db.collection_name.find()
介绍: 查询指定集合中的所有文档。db.collection_name.find({field: value})
介绍: 根据条件查询集合中的文档。db.collection_name.update({field: value}, {new_field: new_value})
介绍: 更新符合条件的文档。db.collection_name.remove({field: value})
介绍: 删除符合条件的文档。索引操作:
db.collection_name.createIndex({field: 1})
db.collection_name.createIndex({field: -1})
db.collection_name.getIndexes()
db.collection_name.dropIndex({field: 1})
db.collection_name.createIndex({field: 1})
介绍: 创建升序索引以加速查询。db.collection_name.createIndex({field: -1})
介绍: 创建降序索引以加速查询。db.collection_name.getIndexes()
介绍: 显示指定集合的所有索引。db.collection_name.dropIndex({field: 1})
介绍: 删除指定的索引。聚合操作:
db.collection_name.aggregate([...pipeline])
备份和还原:
mongodump
mongorestore
mongodump
介绍: 用于备份整个MongoDB数据库,包括数据和索引。mongorestore
介绍: 用于还原MongoDB数据库从备份中。用户和权限管理:
use admin
db.createUser({user: "username", pwd: "password", roles: ["role"]})
db.grantRolesToUser("username", ["role"])
use admin
介绍: 切换到admin数据库以进行用户和权限管理。db.createUser({user: "username", pwd: "password", roles: ["role"]})
介绍: 创建新的MongoDB用户。db.grantRolesToUser("username", ["role"])
介绍: 授予用户特定的角色和权限。服务器状态和信息:
db.serverStatus()
db.version()
db.serverStatus()
介绍: 显示MongoDB服务器的状态信息,如运行时间、内存使用等。db.version()
介绍: 显示MongoDB的版本信息。这些MongoDB命令可用于执行各种数据库管理和查询任务。每个命令都具有特定的功能,可以根据需求在命令行中使用。在生产环境中,请小心操作,并确保正确配置和权限管理以维护数据的安全性和完整性。
Redis是一个内存数据库,用于高性能数据缓存。
docker run -d -p 6379:6379 --name redis redis
Jedis jedis = new Jedis("localhost", 6379);
不建议,Windows版本已停止更新,最新版是2016年的
https://github.com/microsoftarchive/redis/releases
友情链接:【WSL/WSL 2-Redis】解决Windows无法安装WSL Ubuntu子系统与Redis安装
MySQL是一个关系型数据库管理系统。
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password mysql
String url = "jdbc:mysql://localhost:3306/mydb";
Connection conn = DriverManager.getConnection(url, "root", "password");
https://dev.mysql.com/downloads/installer/
https://dev.mysql.com/downloads/mysql/
友情连接:
MySQL-mysql 8.0.11安装教程
MySQL的安装指南
Elasticsearch是一个强大的全文搜索引擎。
8.x 版本要求的前置配置:
● Spring Data 3, used by Spring Boot 3
● based on Spring 6 and Java 17
Spring Boot 3 + Java 17,
我们用Java 8 可选 7.10.0 版本
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
Elasticsearch 7.10.0
启动时间可能较长,报错可能是权限不足,可尝试使用powershell或管理员身份运行
Kibana是Elasticsearch的可视化工具,用于探索和可视化数据。
安装Kibana:
docker run -d -p 5601:5601 --name kibana --link elasticsearch:elasticsearch docker.elastic.co/kibana/kibana:7.0.0
访问Kibana:打开浏览器并访问 http://localhost:5601
。
Kibana 7.10.0
启动时间可能较长,报错可能是权限不足,可尝试使用powershell或管理员身份运行
http://localhost:5601
使用Elasticsearch来存储和检索数据,然后使用Kibana来创建仪表板、可视化和实时监控,以使数据更具信息价值。
RabbitMQ是一个消息队列系统,用于在应用程序之间进行异步通信。
安装RabbitMQ:
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
连接RabbitMQ:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
Downloading and Installing RabbitMQ
安装 RabbitMQ会自动弹出 Erlang/OTP下载连接,这里我们可以都下载最新的
rabbitmq-server-3.12.8.exe
Erlang/OTP 26.1.2
Erlang/OTP和RabbitMQ 版本匹配问题
安装完成后找到安装文件路径,找到 sbin 目录下,打开命令行cmd,在命令行里切换到sbin目录下,输入如下命令:rabbitmq-plugins enable rabbitmq_management(下载可视化管理界面插件)
运行成功后,打开任务资源管理器,找到rabbitmq服务右键重新启动。或者也可以,双击sbin下的rabbitmq-server.bat
可以以直接点击 http://localhost:15672 打开 RabbitMQ 的后台管理页面(默认用户名和密码都是 guest)。
MinIO是一个开源的对象存储服务器,可用于存储大量文件和数据。
安装MinIO:
docker run -d -p 9000:9000 --name minio -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" minio/minio server /data
连接MinIO:
MinioClient minioClient = MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("minio", "minio123")
.build();
不建议,往后常用于Linux服务器,此处我们使用Windows WSL-Ubuntu子系统模拟服务器环境
https://min.io/download#/windows
友情链接:【WSL/WSL 2-Redis】解决Windows无法安装WSL Ubuntu子系统与Redis安装
分布式文件存储MinIO、安装和使用
以下是在Linux系统中安装和配置MinIO的步骤,以Markdown形式进行重构:
步骤 1: 切换到 /opt
目录并创建 minio
文件夹
cd /opt
sudo mkdir -p /opt/minio
cd /opt/minio
步骤 2: 下载MinIO
使用 wget
命令下载MinIO服务器:
sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio
步骤 3: 添加可执行权限
下载完成后,添加可执行权限给 MinIO 文件:
sudo chmod +x minio
步骤 4: 创建MinIO文件存储目录和日志目录
创建MinIO文件存储目录和日志目录:
# 创建MinIO文件存储目录和日志目录
sudo mkdir -p /opt/minio/data
sudo mkdir -p /opt/minio/logs
步骤 5: 创建 run.sh
脚本
在 /opt/minio/
目录下创建一个 run.sh
脚本并编辑以下内容,然后保存。
你可以使用
nano run.sh
Ctrl+O保存,Ctrl+X退出
Ctrl+O出现这个需要按一下Enter确定
#!/bin/bash
sudo export MINIO_ROOT_USER=minio-user
sudo export MINIO_ROOT_PASSWORD=minio-pwd
# 使用 nohup 启动服务,指定文件存放路径 /opt/minio/data 和设置日志文件路径 /opt/minio/logs
# 最新版本中MinIO已经区分了Console和API两个服务的端口,需要指定端口号,否则MinIO会随机生成端口号。
nohup ./minio server --address :9002 --console-address :9001 /opt/minio/data > /opt/minio/logs/minio.log 2>&1 &
这里是设置用户名和密码,你可以自己改
sudo export MINIO_ROOT_USER=minio-user
sudo export MINIO_ROOT_PASSWORD=minio-pwd
步骤 6: 赋予执行权限给脚本
sudo chmod u+x run.sh
步骤 7: 启动MinIO
启动MinIO并检查是否启动成功:
# 启动MinIO服务
sudo bash run.sh
# 检查是否启动成功
ps -ef|grep minio
步骤 8: 查看MinIO日志
查看MinIO的日志文件:
# 查看日志
tail -200f /opt/minio/logs/minio.log
完成了上述步骤后,您将在Linux系统上成功安装和配置MinIO对象存储服务器,可以通过浏览器访问MinIO Console(默认端口9001)并使用您在脚本中设置的用户名和密码登录。
使用RabbitMQ实现异步消息传递,同时使用MinIO来存储和检索文件。
当涉及到前端开发,特别是使用Vue 3时,以下是一些常见的步骤和示例内容,以帮助您开始编写全栈应用程序:
我们可以继续使用这一篇的方法,用一个自动化脚本部署环境
【Vue3-Flask-BS架构Web应用】实践笔记1-使用一个bat脚本自动化完整部署环境
npm install -g @vue/cli
vue create my-vue-app
cd my-vue-app
示例Vue 3组件:
{{ message }}
npm install axios
示例:
示例Vue 3组件:
Frontend Page
axios.get("/api/data")
.then(response => {
// 处理后端数据
})
.catch(error => {
console.error(error);
});
# 基础镜像
FROM openjdk:11
# 复制应用程序 JAR 文件到镜像
COPY target/your-app.jar /app.jar
# 暴露应用程序的端口
EXPOSE 8080
# 启动应用程序
CMD ["java", "-jar", "/app.jar"]
docker build -t your-app-image .
docker run -d -p 8080:8080 --name your-app-container your-app-image
version: "3"
services:
backend:
image: your-backend-image
ports:
- "8080:8080"
frontend:
image: your-frontend-image
ports:
- "80:80"
docker-compose up -d
全栈开发在当今的技术领域中占据着重要地位,为了成功开发全栈应用程序,您需要掌握多种技术和工具。本文提供了一个全面的指南,从环境设置和准备开始,一直到最终的测试和部署。通过学习如何安装Java Development Kit、选择适当的IDE、使用Maven进行项目管理、使用Git进行版本控制,以及安装和配置MongoDB、Redis、MySQL、Elasticsearch、RabbitMQ和MinIO等关键步骤,您将具备开发全栈应用程序所需的知识和技能。此外,我们还介绍了如何使用ApiPost和Postman进行API测试,以及如何使用Docker进行应用程序的容器化和部署。
通过本文,您将能够以自信和熟练的方式进行全栈开发,将您的创意变成强大的应用程序,满足不断增长的技术需求。