提交 524e88a1 编写于 作者: CoCo_Code_Op2's avatar CoCo_Code_Op2 ⛹🏽

Merge branch 'master' into 'pages'

Master

See merge request dev-cloud/spring!11
......@@ -15,4 +15,4 @@ pages:
- public
expire_in: 1 day
only:
- master
\ No newline at end of file
- pages
\ No newline at end of file
node_modules
docs/.vuepress/dist
.vscode
package-lock.json
\ No newline at end of file
package-lock.json
.idea/
# macos
.DS_Store
docs/.DS_Store
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
docs/README.md
\ No newline at end of file
......@@ -2,35 +2,57 @@
从实操的角度整理翻译`Spring`相关文档,包括`快速开始``安装指南``开发工具配置``代码案例`等。
## 内容大纲
## 内容大纲及贡献者
| 内容大纲 | 校对者 | 已校对 |
| ------ | ------ | ------- |
| [为什么是Spring](https://dev-cloud.gitcode.host/spring/why-spring.html) | 冯丙见 | <ul><li> [x] </li></ul> |
| [Spring Boot 介绍](https://dev-cloud.gitcode.host/spring/introducing-spring-boot.html) | 冯丙见 | <ul><li> [x] </li></ul> |
| [Spring 快速入门指南](https://dev-cloud.gitcode.host/spring/quickstart.html) | 冯丙见 | <ul><li> [x] </li></ul> |
| [安装系统要求](https://dev-cloud.gitcode.host/spring/system-requirements.html) | 崔志康 | <ul><li> [ ] </li></ul> |
| [安装Spring Boot](https://dev-cloud.gitcode.host/spring/installing.html) | 崔志康 | <ul><li> [ ] </li></ul> |
| [安装脚手架](https://dev-cloud.gitcode.host/spring/initializr.html) | 王晗 | <ul><li> [x] </li></ul> |
| [在 VS Code 中开始使用 Java](https://dev-cloud.gitcode.host/spring/vscode_java.html) | 王晗 | <ul><li> [x] </li></ul> |
| [使用 IntelliJ IDEA 编写入门指南](https://dev-cloud.gitcode.host/spring/intellij_idea.html) | 王捷 | <ul><li> [ ] </li></ul> |
| [开发你的第一个 Spring Boot 应用程序](https://dev-cloud.gitcode.host/spring/getting-started_first-application.html) | 王捷 | <ul><li> [ ] </li></ul> |
| [构建 RESTful Web 服务](https://dev-cloud.gitcode.host/spring/rest-service.html#%E4%BD%A0%E5%B0%86%E5%BB%BA%E9%80%A0%E4%BB%80%E4%B9%88) | 王晗 | <ul><li> [x] </li></ul> |
| [使用 RESTful Web 服务](https://dev-cloud.gitcode.host/spring/consuming-rest.html#%E4%BD%A0%E5%B0%86%E5%BB%BA%E9%80%A0%E4%BB%80%E4%B9%88) | 王捷 | <ul><li> [ ] </li></ul> |
## 参与贡献流程
- 概述
- 快速开始
- 系统要求
- 安装指南
- 脚手架
- VSCode
- IntelliJ IDEA
- 开发你的第一个 Spring Boot 应用程序
- 构建 RESTful Web 服务
- 使用 RESTful Web 服务
所有 **`Java Spring 熟练使用者`** 可以参与到`Spring 中文文档社区`的建设中来,选择自己感兴趣题目,可以直接撰写文章,也可以翻译 [Spring 官方](https://spring.io/) 上面的内容,也可以校对别人翻译的文章。具体贡献流程如下。
![](./readme/readme-1.png)
## 参与贡献
### 1. 阅读文档帮助改善
所有 **`Java Spring 熟练使用者`** 可以参与到`Spring 中文文档社区`的建设中来,选择自己感兴趣题目,可以直接撰写文章,也可以翻译 [Spring 官方](https://spring.io/) 上面的内容,也可以校对别人翻译的文章。具体贡献流程如下。
[`Spring 中文文档社区`](https://dev-cloud.gitcode.host/spring)上浏览某一篇文档时,发现有不准确的地方,可以`随时`在该页面的左下方点击`在 GitCode 上编辑此页`
![](./readme/readme-2.png)
### 2. 在 GitCode 校对/创作
进入GitCode之后,会自动定位到你想要修改的文件,修改文件内容。
#### 2-1. 仓库的成员
如果是仓库的成员,点击`“编辑”按钮,会直接进入可编辑的状态,供你修改文件内容。
![](./readme/readme-3.png)
![](./readme/readme-4.png)
![](https://gitcode.net/zkxw2008/my-material/-/raw/master/spring/readme-1.png)
#### 2-2. 非仓库的成员
1、Fork[此仓库](https://gitcode.net/dev-cloud/spring)到自己的[GitCode](https://gitcode.net/)账户下。
如果是非仓库的成员,点击`“编辑”`,GitCode 会提醒你没有权限编辑,可以点击`Fork`按钮,将该项目克隆到你的 GitCode 账户下。
2、查看[Issue](https://gitcode.net/dev-cloud/spring/-/issues) 确定自己需要完成的题目。
![](./readme/readme-5.png)
3、对于已有中文的文档内容文件,可以执行校对。
4、对于暂时无中文文档内容的,可以直接贡献(翻译/撰写)原创中文文档。
### 3. 内容编辑完成提交PR
5、内容完成者向[此仓库](https://gitcode.net/dev-cloud/spring)提交 PR(Pull Request)。
内容编辑完成者向[此仓库](https://gitcode.net/dev-cloud/spring)提交 PR(Pull Request)。
6、[此仓库](https://gitcode.net/dev-cloud/spring)审核人员审核通过,符合要求的,即会 Merge 到[此仓库](https://gitcode.net/dev-cloud/spring)中。
### 4. 审核
[主仓库](https://gitcode.net/dev-cloud/spring) 管理者会 Review,符合要求的,即会 Merge 到[主仓库](https://gitcode.net/dev-cloud/spring)中。
7、被 Merged 的 PR,会得到 200 ~ 500元不等的奖励。
### 5. 查看更新
Merge 成功之后,稍等片刻就可以刷新页面查看更新。
......@@ -259,3 +259,4 @@ java -jar target/gs-consuming-rest-0.1.0.jar
原文链接: https://spring.io/guides/gs/consuming-rest/
# 脚手架
![2022-03-01-18-11-18](./initializr/2022-03-01-18-11-18.png)
**[通过配置,生成spring demo项目](https://start.spring.io/)**
![2022-03-01-18-11-18](./initializr/2022-03-03-13-33.png)
原文链接: https://start.spring.io/
# 使用 IntelliJ IDEA 编写入门指南
# 使用 IntelliJ IDEA 运行一个入门指南
本指南将引导您使用 IntelliJ IDEA 构建入门指南之一
本指南将引导您使用 IntelliJ IDEA 构建一个入门指南
## 您将构建什么
您将选择一个 Spring 指南并将其导入 IntelliJ IDEA。然后,您可以阅读指南、编写代码并运行项目。
## 需要什么
## 需要什么
- 约15分钟
- [IntelliJ IDEA](https://www.jetbrains.com/idea/download/)
......@@ -14,13 +14,13 @@
## 安装 IntelliJ IDEA
如果您尚未安装 IntelliJ IDEA(终极版),请访问上面的链接。从那里,您可以下载适用于您平台的副本。要安装它,只需解压缩下载的存档
如果您尚未安装 IntelliJ IDEA(终极版),请访问上面的链接。您可以从那里下载适用于您平台的版本。只需解压缩下载的文件就可以安装它
完成后,继续启动 IntelliJ IDEA。
安装完成后,启动 IntelliJ IDEA。
## 导入入门指南
## 导入一个入门指南
要导入现有项目,您需要一些代码,因此请克隆或复制入门指南之一,例如[REST 服务](https://spring.io/guides/gs/rest-service/)指南:
您需要有代码才能在 IntelliJ IDEA 中导入现有项目,因此请克隆或复制入门指南之一,例如[REST 服务](https://spring.io/guides/gs/rest-service/)指南:
```
$ git clone https://github.com/spring-guides/gs-rest-service.git复制
......@@ -30,15 +30,15 @@ $ git clone https://github.com/spring-guides/gs-rest-service.git复制
![spring_guide_welcome_import](./intellij_idea/spring_guide_welcome_import.png)
在弹出对话框中,确保选择**完整**文件夹下的[Maven](https://spring.io/guides/gs/maven)**pom.xml**[Gradle](https://spring.io/guides/gs/gradle)**build.gradle**文件:
在弹出对话框中,选择**complete**文件夹下的[Maven](https://spring.io/guides/gs/maven)**pom.xml**[Gradle](https://spring.io/guides/gs/gradle)**build.gradle**文件:
![spring_guide_select_gradle_file](./intellij_idea/spring_guide_select_gradle_file.png)
IntelliJ IDEA 将创建一个项目,其中包含准备运行的指南中的所有代码。
IntelliJ IDEA 将创建一个项目,其中包含了运行指南需要的所有代码。
## 从头开始创建项目
如果您想从一个空项目开始并通过指南复制粘贴,请在**项目向导中创建一个新的****Maven****Gradle**项目:
如果您想从一个空项目开始并通过复制粘贴的方式运行指南,请在**项目向导中创建一个新的****Maven****Gradle**项目:
![spring_guide_new_project](./intellij_idea/spring_guide_new_project.png)
......
## Spring Boot 介绍
Spring Boot 可帮助您创建可以运行的独立的、生产级的基于 Spring 的应用程序。我们对 Spring 平台和第三方库持固执己见的看法,以便您可以轻松上手。大多数 Spring Boot 应用程序只需要很少的 Spring 配置。
Spring Boot 可帮助您创建可以运行的独立的、生产级的基于 Spring 的应用程序。我们固化Spring平台和第三方库的依赖,以便您可以轻松上手。大多数 Spring Boot 应用程序只需要很少的 Spring 配置。
您可以使用 Spring Boot 创建可以通过使用`java -jar`或更传统的战争部署启动的 Java 应用程序。我们还提供了一个运行“spring 脚本”的命令行工具。
您可以使用 Spring Boot 创建可以通过使用`java -jar`或更传统的war部署启动的Java应用程序。我们还提供了一个运行“spring 脚本”的命令行工具。
我们的主要目标是:
- 为所有 Spring 开发提供从根本上更快且可广泛访问的入门体验。
- 开箱即用,但随着需求开始偏离默认值,请迅速摆脱困境
- 提供大类项目(例如嵌入式服务器、安全性、指标、健康检查和外部化配置)通用的一系列非功能性特性。
- 为所有Spring开发提供更快、更广泛的入门体验。
- 开箱即用,但随着需求开始变更时,可以快速变更
- 提供一系列对大型项目(例如嵌入式服务器,安全性,度量标准,运行状况检查和外部化配置)通用的非功能性功能
- 绝对没有代码生成,也不需要 XML 配置。
原文链接: https://docs.spring.io/spring-boot/docs/2.6.4/reference/html/getting-started.html#getting-started.introducing-spring-boot
\ No newline at end of file
原文链接: https://docs.spring.io/spring-boot/docs/2.6.4/reference/html/getting-started.html#getting-started.introducing-spring-boot
......@@ -2,29 +2,29 @@
## 您将构建什么
您将构建一个经典的“Hello World!” 任何浏览器都可以连接的端点。你甚至可以告诉它你的名字,它会以更友好的方式回应。
您将构建一个经典的“Hello World!” 任何浏览器都可以连接的终端。你甚至可以告诉它你的名字,它会以更友好的方式回应。
## 你需要什么
**集成开发人员环境 (IDE)**
热门选择包括[IntelliJ IDEA](https://www.jetbrains.com/idea/),[弹簧工具](https://spring.io/tools),[视觉工作室代码](https://code.visualstudio.com/docs/languages/java), 要么[](https://www.eclipse.org/downloads/packages/), 还有很多
热门选择包括[IntelliJ IDEA](https://www.jetbrains.com/idea/),[Spring Tools](https://spring.io/tools),[Visual Studio Code](https://code.visualstudio.com/docs/languages/java)[Eclipse](https://www.eclipse.org/downloads/packages/)等等
**Java™ 开发工具包 (JDK)**
我们推荐[BellSoft Liberica JDK](https://bell-sw.com/)版本 8 或版本 11。
## 第一步:启动一个新的 Spring Boot 项目
## 第一步:开始一个新的 Spring Boot 项目
采用[启动.spring.io](https://start.spring.io/)创建一个“网络”项目。在“依赖项”对话框中搜索并添加“web”依赖项,如屏幕截图所示。点击“生成”按钮,下载 zip,然后将其解压缩到计算机上的文件夹中。
通过[start.spring.io](https://start.spring.io/)创建一个“web”项目。在“依赖项”对话框中搜索并添加“web”依赖项,如屏幕截图所示。点击“生成”按钮,下载 zip,然后将其解压缩到计算机上的文件夹中。
![quick-img-1-12bfde9c5c280b1940d85dee3d81772d](./quickstart_img/quick-img-1-12bfde9c5c280b1940d85dee3d81772d.png)
创建的项目[启动.spring.io](https://start.spring.io/)包含[弹簧靴](https://spring.io/projects/spring-boot),一个使 Spring 准备好在您的应用程序中工作的框架,但不需要太多代码或配置。Spring Boot 是启动 Spring 项目的最快和最流行的方式。
通过[start.spring.io](https://start.spring.io/)创建的项目包含[Spring Boot](https://spring.io/projects/spring-boot),Spring Boot是一个不需要太多代码或配置,就可以使Spring在您的应用程序中正常工作的框架,Spring Boot 是使用 Spring 项目的最快、最流行的方式。
## 第 2 步:添加您的代码
在 IDE 中打开项目并在文件夹`DemoApplication.java`中找到该文件`src/main/java/com/example/demo`。现在通过添加下面代码中显示的额外方法和注来更改文件的内容。您可以复制并粘贴代码或直接输入。
在 IDE 中打开项目并在文件夹`DemoApplication.java`中找到该文件`src/main/java/com/example/demo`。现在通过添加下面代码中显示的额外方法和注来更改文件的内容。您可以复制并粘贴代码或直接输入。
```
......@@ -53,15 +53,17 @@
```
这是在 Spring Boot 中创建一个简单的“Hello World”Web 服务所需的所有代码。
这是在Spring Boot中创建一个简单的“Hello World”Web服务所需的所有代码。
`hello()`我们添加的方法旨在获取一个名为 的字符串参数`name`,然后将该参数与`"Hello"`代码中的单词结合起来。这意味着如果您`“Amy”`在请求中将您的姓名设置为,则响应将为`“Hello Amy”`.
`hello()`方法,我们设计成接收一个字符串参数`name`,然后将该参数与`"Hello"`连接起来。如果您请求时将`name`设置为`“Amy”`,服务将会返回`“Hello Amy”`.
`@RestController`注释告诉 Spring 这段代码描述了一个应该在 web 上可用的端点。`@GetMapping(“/hello”)`告诉 Spring 使用我们的方法`hello()`来回答发送到该`http://localhost:8080/hello`地址的请求。最后,`@RequestParam`告诉 Spring`name`在请求中期待一个值,但如果它不存在,它将默认使用单词“World”。
`@RestController`注解告诉 Spring 这段代码描述了一个应该在 web 上可用的端点。
`@GetMapping(“/hello”)`告诉 Spring 使用我们的方法`hello()`来响应发送到该`http://localhost:8080/hello`地址的请求。
`@RequestParam`告诉 Spring期望请求中包含`name`参数,但如果它不存在,将使用默认值“World”。
## 第 3 步:尝试一下
让我们构建并运行程序。打开命令行(或终端)并导航到您拥有项目文件的文件夹。我们可以通过发出以下命令来构建和运行应用程序:
让我们构建并运行程序。打开命令行(或终端)并进入到项目所在文件夹。可以通过以下命令来构建和运行应用程序:
**MacOS/Linux:**
......@@ -79,8 +81,8 @@ mvnw spring-boot:run
![quick-img2-ac5ae88c60ffaa062234a580f9f1abc3](./quickstart_img/quick-img2-ac5ae88c60ffaa062234a580f9f1abc3.png)
这里的最后几行告诉我们春天已经开始了。Spring Boot 的嵌入式 Apache Tomcat 服务器充当 Web 服务器,并正在侦听`localhost`port上的请求`8080`。打开浏览器,在顶部的地址栏中输入[http://localhost:8080/你好](http://localhost:8080/hello). 你应该得到一个很好的友好回应,如下所示:
最后的几行日志显示Spring已经启动了。Spring Boot 的嵌入式 Apache Tomcat 服务器充当 Web 服务器,并正在监听`localhost``8080`端口请求。打开浏览器,在地址栏中输入[http://localhost:8080/hello](http://localhost:8080/hello). 你应该得到一个很好的友好回应,如下所示:
![quick-img3-afa0a1fe446db8e3c8c7a8d9ca532d23](./quickstart_img/quick-img3-afa0a1fe446db8e3c8c7a8d9ca532d23.png)
原文链接: https://spring.io/quickstart
\ No newline at end of file
原文链接: https://spring.io/quickstart
# 构建 RESTful Web 服务
本指南将引导您完成使用 Spring 创建“Hello, World”RESTful Web 服务的过程
本指南将引导您完成使用 Spring 创建“Hello, World” RESTful Web项目
## 你将建造什么
## 你将开发什么
您将构建一个接受 HTTP GET 请求的服务`http://localhost:8080/greeting`
您将开发一个HTTP服务,可以接收如下GET 请求:`http://localhost:8080/greeting`
它将以问候语的 JSON 表示形式进行响应,如以下清单所示:
它将以JSON格式返回值响应请求,如以下清单所示:
```
{"id":1,"content":"Hello, World!"}
```
您可以在查询字符串中使用可选`name`参数自定义问候语,如以下清单所示:
您可以在请求链接中使用`name`参数发送请求,如以下清单所示:
```
http://localhost:8080/greeting?name=User
```
`name`参数值覆盖默认值`World`并反映在响应中,如以下清单所示:
请求返回报文中,`name`参数值将覆盖默认值`World`,如下所示:
```
{"id":1,"content":"Hello, User!"}
......@@ -27,35 +27,35 @@ http://localhost:8080/greeting?name=User
## 你需要什么
- 约15分钟
- 最喜欢的文本编辑器或 IDE
- 最喜欢的文本编辑器或IDE
- [JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/index.html)或更高版本
- [Gradle 4+](http://www.gradle.org/downloads)[Maven 3.2+](https://maven.apache.org/download.cgi)
- 您还可以将代码直接导入 IDE:
- [弹簧工具套件 (STS)](https://spring.io/guides/gs/sts)
- [Spring 工具套件 (STS)](https://spring.io/guides/gs/sts)
- [IntelliJ IDEA](https://spring.io/guides/gs/intellij-idea/)
## 如何完成本指南
像大多数 Spring[入门指南](https://spring.io/guides)一样,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,您最终都会得到工作代码。
像大多数 Spring[入门指南](https://spring.io/guides)一样,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,您最终都会获得可用的代码。
**从头开始**,请继续[从 Spring Initializr 开始](https://spring.io/guides/gs/rest-service/#scratch)
**从头开始**,请跳转到[从 Spring Initializr 开始](https://spring.io/guides/gs/rest-service/#scratch)
**跳过基础知识**,请执行以下操作:
- [下载](https://github.com/spring-guides/gs-rest-service/archive/main.zip)并解压缩本指南的源存储库,或使用[Git](https://spring.io/understanding/Git)克隆它`git clone https://github.com/spring-guides/gs-rest-service.git`
- 光盘进入`gs-rest-service/initial`
- [下载](https://github.com/spring-guides/gs-rest-service/archive/main.zip)并解压缩本指南的源存储库,或使用[Git](https://spring.io/understanding/Git) Clone`git clone https://github.com/spring-guides/gs-rest-service.git`
- cd into `gs-rest-service/initial`
- 继续[创建资源表示类](https://spring.io/guides/gs/rest-service/#initial)
**完成后**,您可以对照中的代码检查结果`gs-rest-service/complete`
**完成后**,您可以从如下目录查看结果代码 `gs-rest-service/complete`
## 从 Spring Initializr 开始
您可以使用这个[预先初始化的项目](https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.5&packaging=jar&jvmVersion=11&groupId=com.example&artifactId=rest-service&name=rest-service&description=Demo project for Spring Boot&packageName=com.example.rest-service&dependencies=web)并单击 Generate 下载 ZIP 文件。此项目配置为适合本教程中的示例。
您可以使用这个[预先初始化的项目](https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.5&packaging=jar&jvmVersion=11&groupId=com.example&artifactId=rest-service&name=rest-service&description=Demo project for Spring Boot&packageName=com.example.rest-service&dependencies=web)并单击 Generate 下载 ZIP 文件。此项目配置兼容本教程中的示例。
手动初始化项目:
1. 导航到[https://start.spring.io](https://start.spring.io/)。该服务提取应用程序所需的所有依赖项,并为您完成大部分设置。
2. 选择 Gradle 或 Maven 以及您要使用的语言。本指南假定您选择了 Java。
2. 选择 Gradle 或 Maven 以及您要使用的开发语言。本指南假定您选择了 Java。
3. 单击**Dependencies**并选择**Spring Web**
4. 单击**生成**
5. 下载生成的 ZIP 文件,该文件是根据您的选择配置的 Web 应用程序的存档。
......@@ -72,9 +72,9 @@ http://localhost:8080/greeting?name=User
现在您已经设置了项目和构建系统,您可以创建您的 Web 服务。
从考虑服务交互开始这个过程。
首先考虑服务交互流程。
该服务将处理对 的`GET`请求`/greeting`,可以选择`name`在查询字符串中使用参数。该`GET`请求应`200 OK`在表示问候的正文中返回带有 JSON 的响应。它应该类似于以下输出
该服务将处理访问`/greeting``GET`请求,请求可选参数 `name`。该`GET`请求在返回`200 OK`的情况下,JSON返回值如下
```
{
......@@ -83,9 +83,9 @@ http://localhost:8080/greeting?name=User
}
```
`id`字段是问候语的唯一标识符,是问候语`content`的文本表示。
`id`字段是返回内容的唯一标识符,是返回内容`content`的文本表示。
要对问候表示建模,请创建一个资源表示类。为此,请提供一个普通的旧 Java 对象,其中包含用于`id``content`数据的字段、构造函数和访问器,如以下清单(来自`src/main/java/com/example/restservice/Greeting.java`)所示:
要对返回内容建模,请创建一个资源表示类。为此,需要创建一个普通的Java 对象,其中包含`id``content`两个数据字段、构造函数和访问器,如以下(来自`src/main/java/com/example/restservice/Greeting.java`)所示:
```
package com.example.restservice;
......@@ -110,11 +110,11 @@ public class Greeting {
}
```
此应用程序使用[Jackson JSON](https://github.com/FasterXML/jackson)将类型的实例自动编组`Greeting`为 JSON。网络启动器默认包含 Jackson。
此应用程序使用[Jackson JSON](https://github.com/FasterXML/jackson),将实例`Greeting`转换为JSON。web启动器默认包含Jackson。
## 创建资源控制器
在 Spring 构建 RESTful Web 服务的方法中,HTTP 请求由控制器处理。这些组件由[`@RestController`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html)注释标识,`GreetingController`下面的清单 (from )通过返回类的新实例来`src/main/java/com/example/restservice/GreetingController.java`处理`GET`请求:`/greeting``Greeting`
在 Spring 构建的 RESTful Web 服务中,HTTP 请求由控制器处理。这些组件由[`@RestController`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html)注释标识,如下 `GreetingController`实例(参看 `src/main/java/com/example/restservice/GreetingController.java`)处理`GET`请求:`/greeting`
```
package com.example.restservice;
......@@ -138,29 +138,31 @@ public class GreetingController {
}
```
这个控制器简洁明了,但引擎盖下有很多事情要做。我们一步一步分解。
这个控制器简洁明了,但底层有很多事情要做。我们一步一步分解。
`@GetMapping`释确保 HTTP GET 请求`/greeting`映射到`greeting()`方法。
`@GetMapping`解确保 HTTP GET 请求`/greeting` 可以映射到`greeting()`方法。
有其他 HTTP 动词的伴随注释(例如`@PostMapping`POST)。还有一个`@RequestMapping`它们都源自的注释,并且可以用作同义词(例如`@RequestMapping(method=GET)`)。
```
还有其他 HTTP 请求注解(例如`@PostMapping`POST)。所有注解均继承`@RequestMapping`,同时也可以使用如下注解方式(例如`@RequestMapping(method=GET)`)。
```
`@RequestParam`将查询字符串参数的值绑定`name`到方法的`name`参数中`greeting()`。如果`name`请求中没有参数,则使用`defaultValue`of `World`
`@RequestParam`将查询参数`name`的值绑定到方法`greeting()`的参数`name`上。如果请求中没有`name`参数,则使用参数默认值 `World`
方法体的实现创建并返回一个新`Greeting`对象,该对象具有`id``content`基于下一个值的属性,并使用 greeting`counter`格式化给定的格式。`name``template`
此方法创建并返回一个新`Greeting`对象,该对象包含`id``content`属性,并通过counter.incrementAndGet(), String.format(template, name) 分别进行参数赋值
传统 MVC 控制器和前面显示的 RESTful Web 服务控制器之间的一个关键区别是 HTTP 响应主体的创建方式。这个 RESTful Web 服务控制器不是依靠视图技术来执行服务器端将问候数据呈现为 HTML,而是填充并返回一个`Greeting`对象。对象数据将作为 JSON 直接写入 HTTP 响应。
传统 MVC 控制器和前面显示的 RESTful Web 服务控制器之间的一个关键区别是 HTTP 请求响应的创建方式。这个 RESTful Web 服务控制器不是依靠视图技术直接返回HTML类型的响应内容,而是填充并返回一个`Greeting`对象。对象数据将以 JSON 类型直接写入 HTTP 响应。
此代码使用 Spring[`@RestController`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html)释,它将类标记为控制器,其中每个方法都返回域对象而不是视图。它是同时包含`@Controller`和的简写`@ResponseBody`
此代码使用 Spring[`@RestController`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html)解,它将类标记为控制器,其中每个方法都返回域对象而不是视图。它是`@Controller``@ResponseBody`的简写
`Greeting`对象必须转换为 JSON。感谢 Spring 的 HTTP 消息转换器支持,您无需手动进行此转换。因为[Jackson 2](https://github.com/FasterXML/jackson)在类路径上,所以会自动选择 Spring[`MappingJackson2HttpMessageConverter`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/json/MappingJackson2HttpMessageConverter.html)`Greeting`实例转换为 JSON
`Greeting`对象必须转换为 JSON 格式。依赖于 Spring 的 HTTP 消息转换器支持,您无需手动进行此转换。因为classpath里面已经包含[Jackson 2](https://github.com/FasterXML/jackson),所以会自动选择Spring的[`MappingJackson2HttpMessageConverter`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/json/MappingJackson2HttpMessageConverter.html)`Greeting`实例转换为JSON格式
`@SpringBootApplication`是一个方便的注释,它添加了以下所有内容:
`@SpringBootApplication`是一个方便的注释,它包含了以下所有内容:
- `@Configuration`: 将类标记为应用程序上下文的 bean 定义源
- `@EnableAutoConfiguration`:告诉 Spring Boot 根据类路径设置、其他 bean 和各种属性设置开始添加 bean。例如,如果`spring-webmvc`位于类路径上,则此注释将应用程序标记为 Web 应用程序并激活关键行为,例如设置`DispatcherServlet`.
- `@ComponentScan`: 告诉 Spring 在包中查找其他组件、配置和服务`com/example`,让它找到控制器。
- `@Configuration`: 在应用程序上下文中,将类标记为bean
- `@EnableAutoConfiguration`:告诉 Spring Boot 根据类路径设置、其他 bean 和各种属性设置扫描并添加bean。例如,如果`spring-webmvc`位于类路径上,则此注释将应用程序标记为 Web 应用程序并激活关键行为,例如设置`DispatcherServlet`.
- `@ComponentScan`: 告诉 Spring 在包`com/example`中扫描其他components, configurations及services类
`main()`方法使用 Spring Boot 的`SpringApplication.run()`方法来启动应用程序。您是否注意到没有一行 XML?也没有`web.xml`文件。这个 Web 应用程序是 100% 纯 Java,您不必处理任何管道或基础设施的配置。
`main()`方法使用 Spring Boot 的`SpringApplication.run()`方法来启动应用程序。您是否注意到我们没有配置一行 XML?也没有`web.xml`文件。这个 Web 应用程序是 100% 纯 Java,您不必处理任何管道或基础设施的配置。
### 构建一个可执行的 JAR
......@@ -180,7 +182,7 @@ java -jar target/gs-rest-service-0.1.0.jar
此处描述的步骤创建了一个可运行的 JAR。您还可以[构建经典的 WAR 文件](https://spring.io/guides/gs/convert-jar-to-war/)
显示记录输出。该服务应在几秒钟内启动并运行。
该服务会在几秒钟内启动并运行。
## 测试服务
......@@ -190,18 +192,18 @@ java -jar target/gs-rest-service-0.1.0.jar
{"id":1,"content":"Hello, World!"}
```
通过访问提供`name`查询字符串参数`http://localhost:8080/greeting?name=User``content`请注意属性的值如何从`Hello, World!`变为`Hello, User!`,如以下清单所示:
通过访问提供`name`查询字符串参数`http://localhost:8080/greeting?name=User``content`请注意属性的值如何从`Hello, World!`变为`Hello, User!`,如以下所示:
```
{"id":2,"content":"Hello, User!"}
```
这一变化表明,`@RequestParam`安排在`GreetingController`按预期工作。该`name`参数已被赋予默认值,`World`但可以通过查询字符串显式覆盖。
这一变化表明,`@RequestParam``GreetingController`按预期工作。该`name`参数的默认值`World` 已被参数`name`的值覆盖
还要注意`id`属性是如何从`1`变为 的`2`。这证明您正在`GreetingController`跨多个请求处理同一个实例,并且其`counter`字段在每次调用时都按预期递增。
还要注意`id`属性是如何从`1`变为 的`2`。这证明是使用同一个`GreetingController`处理多个请求,并且其`counter`字段在每次调用时都按预期递增。
## 概括
恭喜!您刚刚使用 Spring 开发了一个 RESTful Web 服务。
原文链接: https://spring.io/guides/gs/rest-service/
\ No newline at end of file
原文链接: https://spring.io/guides/gs/rest-service/
# 在 VS Code 中开始使用 Java
本教程向您展示如何使用 Visual Studio Code 在 Java 中编写和运行 Hello World 程序。它还涵盖了一些高级功能,您可以通过阅读本节中的其他文档来探索这些功能。
本教程向您展示如何使用 Visual Studio Code 在 Java 中编写和运行 Hello World 程序,同时您可以通过阅读本节中的其他文档来探索一些高级功能。
有关 VS Code 中可用于 Java 的功能的概述,请参阅[Java 语言概述](https://code.visualstudio.com/docs/languages/java)
如果您在学习本教程时遇到任何问题,可以通过输入[问题](https://github.com/microsoft/vscode-java-pack/issues)与我们联系。
如果您在学习本教程时遇到任何问题,可以通过[问题](https://github.com/microsoft/vscode-java-pack/issues)与我们联系。
## 为 Java 开发设置 VS Code
### Java 编码包
为了帮助您快速设置,您可以安装**Coding Pack for Java**,其中包括 VS Code、Java 开发工具包 (JDK) 和基本的 Java 扩展。Coding Pack 可用作全新安装,或用于更新或修复现有开发环境。
为了帮助您快速开始,您可以安装**Coding Pack for Java**,其中包括 VS Code、Java开发工具包 (JDK) 和基本的 Java扩展。Coding Pack 可用于全新安装,或用于更新修复现有开发环境。
[安装适用于 Java 的编码包 - Windows](https://aka.ms/vscode-java-installer-win)
[安装 Java 环境下的Coding Pack - Windows](https://aka.ms/vscode-java-installer-win)
[安装适用于 Java 的编码包 - macOS](https://aka.ms/vscode-java-installer-mac)
[安装 Java 环境下的Coding Pack - macOS](https://aka.ms/vscode-java-installer-mac)
> **注意**:Java 编码包仅适用于 Windows 和 macOS。对于其他操作系统,您将需要手动安装 JDK、VS Code 和 Java 扩展。
> **注意**:Java 环境下的 Coding Pack 仅适用于 Windows 和 macOS。对于其他操作系统,您需要手动安装 JDK、VS Code 和 Java 扩展。
### 安装扩展
如果您是现有的 VS Code 用户,还可以通过安装[Extension Pack for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)来添加 Java 支持,其中包括以下扩展:
如果您已安装 VS Code,还可以通过安装[Extension Pack for Java](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)来添加 Java 支持,其中包括以下扩展:
- [Red Hat 对 Java™ 的语言支持](https://marketplace.visualstudio.com/items?itemName=redhat.java)
- [Java 调试器](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug)
- [Java 的测试运行器](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test)
- [用于 Java 的 Maven](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven)
- [Java 项目](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-dependency)
- [Java 项目](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-dependency)
- [Visual Studio 智能代码](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode)
[安装 Java 扩展包](vscode:extension/vscjava.vscode-java-pack)
[Java 扩展包](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)提供了快速入门指南和代码编辑和调试技巧。它还有一个常见问题解答,可以回答一些常见问题。使用命令选项板 ( Ctrl+Shift+P ) 中的命令**Java: Tips for Beginners**来启动指南。
[Java 扩展包](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)提供了快速入门指南、代码编辑和调试技巧的功能。它还有一个常见问题解答,可以查看一些常见问题。使用命令选项板 ( Ctrl+Shift+P ) 中的命令**Java: Tips for Beginners**来启动指南。
![getting-started](./vscode_java/getting-started.png)
您也可以单独安装扩展。**扩展指南**旨在帮助您。您可以使用**Java: Extensions Guide**命令启动该指南。
您也可以单独安装扩展。**扩展指南**旨在帮助您。您可以使用**Java: Extensions Guide**命令查看该指南。
对于本教程,唯一需要的扩展是:
......@@ -54,15 +54,15 @@
### 安装 Java 开发工具包 (JDK)
如果您以前从未安装过 JDK 并且需要安装一个,我们建议您从以下来源之一中进行选择:
如果您以前从未安装过JDK,我们建议您从以下来源进行选择:
- [亚马逊 Corretto](https://aws.amazon.com/corretto)
- [阿祖尔祖鲁](https://www.azul.com/downloads/?package=jdk)
- [Eclipse Adoptium Temurin](https://adoptium.net/)
- [OpenJDK 的 Microsoft 构建](https://www.microsoft.com/openjdk)
- [甲骨文 Java SE](https://www.oracle.com/java/technologies/javase-downloads.html)
- [Red Hat 构建的 OpenJDK](https://developers.redhat.com/products/openjdk/download)
- [树液机](https://sapmachine.io/)
- [Amazon Corretto](https://aws.amazon.com/corretto)
- [Azul Zulu](https://www.azul.com/downloads/?package=jdk)
- [Eclipse Adoptium's Temurin](https://adoptium.net/)
- [Microsoft Build of OpenJDK](https://www.microsoft.com/openjdk)
- [Oracle Java SE](https://www.oracle.com/java/technologies/javase-downloads.html)
- [Red Hat build of OpenJDK](https://developers.redhat.com/products/openjdk/download)
- [SapMachine](https://sapmachine.io/)
## 创建源代码文件
......@@ -82,11 +82,11 @@ Visual Studio Code 还支持更复杂的 Java 项目 - 请参阅[项目管理](h
## 编辑源代码
您可以使用代码片段来搭建您的类和方法。VS Code 还提供了用于代码完成的 IntelliSense,以及各种重构方法。
您可以使用代码片段来搭建您的类和方法。VS Code 还提供了用于代码智能提示的 IntelliSense,以及各种重构方法。
<video src="./vscode_java/edit-code.mp4"></video>
要了解有关编辑 Java 的更多信息,请参阅[Java 编辑](https://code.visualstudio.com/docs/java/java-editing)
要了解更多有关编辑 Java 的信息,请参阅[Java 编辑](https://code.visualstudio.com/docs/java/java-editing)
## 运行和调试你的程序
......@@ -96,17 +96,17 @@ Visual Studio Code 还支持更复杂的 Java 项目 - 请参阅[项目管理](h
调试器还支持[热代码替换](https://code.visualstudio.com/docs/java/java-debugging#_hot-code-replace)和条件断点等高级功能。
有关详细信息,请参阅[Java 调试](https://code.visualstudio.com/docs/java/java-debugging)
更多详细信息,请参阅[Java 调试](https://code.visualstudio.com/docs/java/java-debugging)
## 更多功能
该编辑器还具有更多功能来帮助您处理 Java 工作负载
该编辑器还具有更多功能来协助您完成 Java 工作
- [编辑 Java](https://code.visualstudio.com/docs/java/java-editing)更详细地解释了如何导航和编辑 Java
- [编辑 Java](https://code.visualstudio.com/docs/java/java-editing)更详细地介绍了如何导航和编辑 Java
- [调试](https://code.visualstudio.com/docs/java/java-debugging)说明了 Java 调试器的所有关键特性
- [测试](https://code.visualstudio.com/docs/java/java-testing)为 JUnit 和 TestNG 框架提供全面的支持
- [Java 项目管理](https://code.visualstudio.com/docs/java/java-project)向您展示如何使用项目视图使用 Maven
- [Java 项目管理](https://code.visualstudio.com/docs/java/java-project)向您展示如何使用项目视图使用 Maven
- [Spring Boot](https://code.visualstudio.com/docs/java/java-spring-boot)[Tomcat 和 Jetty](https://code.visualstudio.com/docs/java/java-tomcat-jetty)展示了出色的框架支持
- [Java Web Apps](https://code.visualstudio.com/docs/java/java-webapp)展示了如何在 VS Code 中使用 Java Web App
原文链接: https://code.visualstudio.com/docs/java/java-tutorial
\ No newline at end of file
原文链接: https://code.visualstudio.com/docs/java/java-tutorial
......@@ -4,45 +4,45 @@ Spring 让每个人都可以更快、更轻松、更安全地编写 Java。Sprin
## Spring无处不在
Spring 的灵活库受到全世界开发人员的信赖。Spring 每天为数百万最终用户提供令人愉悦的体验——无论是[流媒体电视](https://medium.com/netflix-techblog/netflix-oss-and-spring-boot-coming-full-circle-4855947713a0),[网上购物](https://tech.target.com/2018/12/18/spring-feign.html),或无数其他创新解决方案。Spring 也有来自所有科技巨头的贡献,包括阿里巴巴、亚马逊、谷歌、微软等。
Spring灵活的库受到全世界开发人员的信赖。Spring每天为数百万终端用户提供令人愉悦的体验,无论是[流媒体电视](https://medium.com/netflix-techblog/netflix-oss-and-spring-boot-coming-full-circle-4855947713a0),[网上购物](https://tech.target.com/2018/12/18/spring-feign.html),或无数其他创新解决方案。Spring 也有来自所有科技巨头的贡献,包括阿里巴巴、亚马逊、谷歌、微软等。
## Spring很灵活
Spring 灵活而全面的扩展集和第三方库让开发人员可以构建几乎任何可以想象的应用程序。Spring 框架的核心是[控制反转 (IoC)](https://en.wikipedia.org/wiki/Inversion_of_control)[依赖注入 (DI)](https://en.wikipedia.org/wiki/Dependency_injection)特性为广泛的特性和功能集提供了基础。无论您是为 Web 构建安全、反应式、基于云的微服务,还是为企业构建复杂的流数据流,Spring 都有可以提供帮助的工具。
Spring 灵活而全面的扩展集和第三方库让开发人员可以构建几乎任何可以想象到的应用程序。从框架核心原理来看,Spring框架的[控制反转 (IoC)](https://en.wikipedia.org/wiki/Inversion_of_control)[依赖注入 (DI)](https://en.wikipedia.org/wiki/Dependency_injection)特性,为其广泛的特性和功能集提供了基础能力。无论您是为 Web 构建安全、反应式、基于云的微服务,还是为企业构建复杂的流式数据处理流程,Spring 都有可以提供支持的工具。
## Spring是生产力
[弹簧靴](https://spring.io/guides/gs/spring-boot/)改变您处理 Java 编程任务的方式,从根本上简化您的体验。Spring Boot 结合了应用程序上下文和自动配置的嵌入式 Web 服务器等必需品,[微服务](https://spring.io/microservices)发展小菜一碟。为了更快,您可以将 Spring Boot 与 Spring Cloud 丰富的支持库、服务器、模式和模板集相结合,以安全地将整个基于微服务的架构部署到[](https://spring.io/cloud),在创纪录的时间内。
[Spring Boot](https://spring.io/guides/gs/spring-boot/)改变您处理 Java 编程任务的方式,从根本上简化您的体验。Spring Boot将一些必备功能,比如应用程序上下文、自动配置的嵌入式Web服务器等整合到一起,从而使[微服务](https://spring.io/microservices)开发变得非常简单。为了让开发速度更快,您可以将Spring Boot与Spring Cloud丰富的支持库、服务、模式和模板集相结合,以便在极短时间安全地将整个基于微服务的架构部署到[](https://spring.io/cloud)
## Spring来得很
## Spring非常
我们的工程师非常关心性能。使用 Spring,您会注意到默认情况下快速启动、快速关闭和优化执行。Spring 项目也越来越多地支持[反应式](https://spring.io/reactive)(非阻塞)编程模型,效率更高。开发人员的生产力是 Spring 的超能力。Spring Boot 可帮助开发人员轻松构建应用程序,并且比其他竞争范式更省力。嵌入式 Web 服务器、自动配置和“fat jars”可帮助您快速入门,创新如[Spring DevTools 中的 LiveReload](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools-livereload)意味着开发人员可以比以往更快地迭代。您甚至可以在几秒钟内启动一个新的 Spring 项目,Spring Initializr 位于[启动.spring.io](https://start.spring.io/).
我们的工程师非常关心性能。使用 Spring,您会注意到默认情况下快速启动、快速关闭和优化执行。Spring 项目也越来越多地支持[响应式](https://spring.io/reactive)(非阻塞)编程模型,效率更高。开发人员的生产力是 Spring 的超能力。Spring Boot 可帮助开发人员轻松构建应用程序,并且比其他竞品更省力。嵌入式 Web 服务器、自动配置和“fat jars”可帮助您快速入门,[Spring DevTools 中的 LiveReload](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools-livereload)等创新功能意味着开发人员可以比以往更快地迭代。您甚至可以使用Spring Initializr(Spring Boot项目构建工具,位于[启动.spring.io](https://start.spring.io/))在几秒钟内启动一个新的 Spring 项目.
## Spring是安全的
Spring 在快速、负责任地处理安全问题方面有着良好的记录。Spring 提交者与安全专家合作,修补和测试任何报告的漏洞。第三方依赖项也受到密切监控,并定期发布更新以帮助确保您的数据和应用程序尽可能安全。此外,[Spring安全](https://spring.io/projects/spring-security)让您更轻松地与行业标准的安全方案集成,并提供默认安全的值得信赖的解决方案。
## Spring是支持的
## Spring相关支撑非常完善
[Spring社区](https://spring.io/community)是巨大的、全球性的、多样化的,涵盖了所有年龄和能力的人,从完全的初学者到经验丰富的专业人士。无论您在旅途中的哪个阶段,都可以找到使您更上一层楼所需的支持和资源:[快速入门](https://spring.io/quickstart),[指南和教程](https://spring.io/guides),[视频](https://www.youtube.com/channel/UC7yfnfvEUlXUIfm8rGLwZdA),[聚会](https://spring.io/events),[支持](https://spring.io/support),甚至是正式的[培训和认证](https://spring.io/training).
[Spring社区](https://spring.io/community)是庞大的、全球性的、多样化的,涵盖了所有年龄和能力的人,从完全的初学者到经验丰富的专业人士。无论您在旅途中的哪个阶段,都可以找到使您更上一层楼所需的支持和资源:[快速入门](https://spring.io/quickstart),[指南和教程](https://spring.io/guides),[视频](https://www.youtube.com/channel/UC7yfnfvEUlXUIfm8rGLwZdA),[聚会](https://spring.io/events),[支持](https://spring.io/support),甚至是正式的[培训和认证](https://spring.io/training).
# What can Spring do?
# Spring能干什么?
## Microservices
使用可独立发展的微服务快速交付生产级功能。
通过可独立开发的微服务快速交付生产级功能。
## Reactive
Spring 的异步、非阻塞架构意味着您可以从计算资源中获得更多收益。
Spring的异步、非阻塞架构意味着您可以从计算资源中获得更多收益。
## Cloud
您的代码,任何云——我们已经为您服务。无论您的平台如何,都可以连接和扩展您的服务。
您的代码与任何云的对接我们都已经为您覆盖。无论您的使用什么平台,都可以连接并扩展您的服务。
## Web apps
用于连接到任何数据存储的快速、安全和响应式 Web 应用程序的框架。
连接到任何数据存储的快速,安全和响应式Web应用程序的框架。
## Serverless
......@@ -54,6 +54,6 @@ Spring 的异步、非阻塞架构意味着您可以从计算资源中获得更
## Batch
自动化任务。一次离线处理数据以适合您
自动化任务。一次适合您的离线数据处理
原文链接: https://spring.io/why-spring
\ No newline at end of file
原文链接: https://spring.io/why-spring
......@@ -4,6 +4,7 @@
"docs:build": "vuepress build docs"
},
"devDependencies": {
"vuepress": "^1.9.7",
"vuepress-plugin-autometa": "^0.1.13"
}
}
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册