本文将指导你使用 Spring Initializr 创建一个自定义应用程序,然后将Azure storage starter
添加到你的应用程序中,然后使用你的应用程序将一个blob上传到你的Azure存储账户。
准备
为了遵循本文的步骤,需要以下先决条件。
- 一个Azure订阅;如果你还没有Azure订阅,你可以激活你的MSDN订阅者福利或注册一个免费的Azure账户。
- Azure命令行界面(CLI)。
- Java Development Kit (JDK)。有关在 Azure 上进行开发时可用的 JDK 的详细信息,请参阅 Java JDKs support for Azure development - Java on Azure | Microsoft Learn
- Apache Maven,3.0或更高版本。
要完成本文的步骤,需要Spring Boot 2.0或更高版本。
为你的应用程序创建一个Azure存储账户和blob容器
下面的程序在门户中创建了一个Azure存储账户和容器。
1. 打开Azure portal 并且登录
2. 选择创建一个资源,然后开始,再选择存储账户
3. 在创建存储账户页面,输入以下信息
- 选择订阅。
- 选择资源组,或创建一个新的资源组。
- 输入一个独特的存储账户名称,这将成为你的存储账户的URI的一部分。例如:如果你输入- ·wingtiptoysstorage·作为名称,URI 将是
wingtiptoysstorage.core.windows.net
。 - 为你的存储账户指定位置。
4. 创建和部署
- 当你指定了上面列出的选项后,选择审查+创建。
- 查看规格,然后选择 "创建 "来创建你的存储账户。
- 当部署完成后,选择转到资源。
5. 选择容器
- 为容器命名。
- 从下拉列表中选择Blob。
6. Azure portal将在创建后列出你的blob容器。
你也可以使用Azure CLI来创建Azure存储账户和容器,使用以下步骤。记住要用你自己的值来替换占位符的值(在角括号里)。
- 打开一个命令提示符。
- 登录到你的Azure账户
az login
- 如果你没有一个资源组,用以下命令创建一个
az group create \
--name <resource-group> \
--location <location>
- 通过使用以下命令创建一个存储账户
az storage account create \
--name <storage-account-name> \
--resource-group <resource-group> \
--location <location>
- 要创建一个容器,使用以下命令
az storage container create \
--account-name <storage-account-name> \
--name <container-name> \
--auth-mode login
用Spring Initializr创建一个简单的Spring Boot应用程序
下面的程序创建了Spring boot应用程序.
- 打开 https://start.springboot.io/
- 指定以下选项
- 生成一个Maven项目
- 指定Java 11
- 指定一个等于或大于2.4.6的Spring Boot版本
- 为你的应用程序指定Group 和Artifact 名称
- 添加Spring Web依赖
Spring Initializr使用Group和Artifact名称来创建包名;例如:
com.wingtiptoys.storage
- 当你指定了上面列出的选项后,选择生成。
- 当出现提示时,将项目下载到你本地电脑的一个路径上。
- 在你把文件解压到本地系统后,你的简单的Spring Boot应用程序就可以编辑了。
配置你的Spring Boot应用以使用 Azure storage starter
下面的程序将Spring boot应用程序配置为使用Azure存储。
1. 在你的应用程序的根目录下找到pom.xml文件
例如:
C:\SpringBoot\storage\pom.xml
或者
/users/example/home/storage/pom.xml
2. 在文本编辑器中打开pom.xml文件
将Spring Cloud Azure Storage
启动器添加到<dependencies>
列表中。
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-starter-storage</artifactId>
<version>3.4.0</version>
</dependency>
然后保存
配置你的Spring Boot应用以使用你的Azure存储账户
下面的程序将Spring boot应用程序配置为使用你的Azure存储账户。
1. 在你的应用程序的资源目录中找到application.properties
例如
C:\SpringBoot\storage\src\main\resources\application.properties
或者
/users/example/home/storage/src/main/resources/application.properties
2. 在文本编辑器中打开application.properties文件
添加以下几行,然后用你的存储账户的适当属性替换样本值
# Storage account name length should be between 3 and 24 and use numbers and lower-case letters only
azure.storage.account-name=<storage-account-name>
# Fill storage account access key copied from portal
azure.storage.account-key=<storage-account-access-key>
# Fill storage blob endpoint URL copied from portal
azure.storage.blob-endpoint=<storage-endpoint-URL>
配置项说明:
配置项 | 描述 | 是否必须 |
---|---|---|
azure.storage.accountName | Azure存储账户的名称。 | Yes |
azure.storage.accountKey | Azure存储账户的访问密钥。 | Yes |
azure.storage.blob-endpoint | Azure Storage账户的blob端点URL。 | 当使用存储blob资源时,可选。 |
azure.storage.file-endpoint | Azure存储账户的文件端点URL。 | 当使用存储文件资源时,可选。 |
保存并关闭application.properties
文件
增加示例代码以实现基本的Azure存储功能
在本节中,您将创建必要的Java类,以便在Azure存储账户中存储blob。
创建 BlobController
1. 在应用程序的包目录下创建一个名为BlobController
例如:
C:\SpringBoot\storage\src\main\java\com\wingtiptoys\storage\BlobController.java
或者
/users/example/home/storage/src/main/java/com/wingtiptoys/storage/BlobController.java
2. 在文本编辑器中打开blob控制器的Java文件
在文件中添加以下几行。将<your-resource-group>
、<your-artifact-name>
、<your-container-name>
和<your-blob-name>
的占位符替换为你的值。
package com.<your-resource-group>.<your-artifact-name>;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
@RestController
@RequestMapping("blob")
public class BlobController {
@Value("azure-blob://<your-container-name>/<your-blob-name>")
private Resource blobFile;
@GetMapping("/readBlobFile")
public String readBlobFile() throws IOException {
return StreamUtils.copyToString(
this.blobFile.getInputStream(),
Charset.defaultCharset());
}
@PostMapping("/writeBlobFile")
public String writeBlobFile(@RequestBody String data) throws IOException {
try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
os.write(data.getBytes());
}
return "file was updated";
}
}
保存,然后关闭
3. 打开一个命令提示符,改变目录到你的pom.xml文件所在的文件夹
例如
cd C:\SpringBoot\storage
或者
cd /users/example/home/storage
4. 用Maven构建你的Spring Boot应用程序并运行它
例如
mvn clean package
mvn spring-boot:run
5. 一旦你的应用程序运行,你可以使用curl来测试你的应用程序
a. 发送一个POST请求来更新一个文件的内容。
curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080/blob/writeBlobFile
你应该看到一个响应,即 “file was updated”。
b. 发送一个GET请求来验证文件的内容。
curl -X GET http://localhost:8080/blob/readBlobFile
你应该看到你发布的 “new message” 文本。
总结
在本教程中,你使用Spring Initializr创建了一个新的Java应用程序,将Azure存储启动器添加到你的应用程序中,然后将你的应用程序配置为向Azure存储账户上传一个blob。
清理资源
当不再需要时,请使用 Azure portal 删除本文中创建的资源,以避免意外的费用。