Azure教程实战项目开发:构建一个全栈Java Spring Boot应用
在当今的云原生时代,微软Azure作为领先的云服务平台,为开发者提供了从计算、存储到人工智能的完整解决方案。本教程将通过一个实战项目,手把手教你如何将传统的Java Spring Boot应用现代化,并部署到Azure云平台。我们将结合Android Studio(用于构建一个简单的配套客户端)、Apache相关技术(如Apache Maven)以及Java Spring框架,打造一个从本地开发到云端部署的完整工作流。无论你是后端开发者还是全栈工程师,这篇教程都将为你提供宝贵的实践经验。
项目概述与技术栈
我们将开发一个简单的“待办事项(Todo)”API服务。这个项目麻雀虽小,五脏俱全,涵盖了现代Web应用的核心要素。
- 后端API:使用Java Spring Boot构建,提供RESTful API。
- 数据存储:使用Azure Cosmos DB(兼容MongoDB API)作为云数据库。
- 构建工具:使用Apache Maven进行项目依赖管理和构建。
- 部署平台:将应用部署到Azure App Service。
- 客户端(可选):使用Android Studio创建一个极简的Android应用来调用我们的API。
通过这个项目,你将学会如何配置Spring Boot以连接云数据库,如何使用Maven插件将应用部署到Azure,以及如何管理云资源。
第一步:搭建Spring Boot后端服务
首先,我们使用Spring Initializr(start.spring.io)快速生成项目骨架。
1.1 创建项目与依赖
访问Spring Initializr,选择以下配置:
- Project: Maven Project (Apache Maven)
- Language: Java
- Spring Boot: 选择最新的稳定版本(如3.x)
- Dependencies:
Spring Web,Spring Data MongoDB,Lombok
下载并解压项目,然后用你喜欢的IDE(如IntelliJ IDEA)打开。项目结构是标准的Maven项目。
1.2 定义数据模型与Repository
我们创建一个TodoItem实体类,并使用Spring Data MongoDB进行持久化。
package com.example.todo.model;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.time.LocalDateTime;
@Data
@Document(collection = "todoItems")
public class TodoItem {
@Id
private String id;
private String task;
private boolean completed;
private LocalDateTime createdDate = LocalDateTime.now();
}
接下来,创建Repository接口,Spring Data会为我们自动实现基本的CRUD操作。
package com.example.todo.repository;
import com.example.todo.model.TodoItem;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface TodoRepository extends MongoRepository {
}
1.3 实现REST控制器
创建一个REST控制器来处理HTTP请求。
package com.example.todo.controller;
import com.example.todo.model.TodoItem;
import com.example.todo.repository.TodoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/todos")
public class TodoController {
@Autowired
private TodoRepository todoRepository;
@GetMapping
public List getAllTodos() {
return todoRepository.findAll();
}
@PostMapping
public TodoItem createTodo(@RequestBody TodoItem todoItem) {
return todoRepository.save(todoItem);
}
@DeleteMapping("/{id}")
public void deleteTodo(@PathVariable String id) {
todoRepository.deleteById(id);
}
}
至此,一个简单的本地API就完成了。你可以运行应用,默认使用内存中的H2数据库进行测试。但我们的目标是云端。
第二步:配置Azure Cosmos DB并连接应用
Azure Cosmos DB是一个全球分布的多模型数据库服务。我们使用其MongoDB API,这样我们的Spring Boot应用几乎无需修改即可接入。
2.1 在Azure门户创建资源
- 登录Azure门户。
- 点击“创建资源” -> “数据库” -> “Azure Cosmos DB”。
- 在创建时,关键步骤是选择“API”:请务必选择Azure Cosmos DB for MongoDB API。
- 创建完成后,进入资源,在“设置” -> “连接字符串”中,找到主连接字符串。
2.2 配置Spring Boot连接
修改项目的src/main/resources/application.properties文件,替换为从Azure门户获取的连接信息。
# Azure Cosmos DB MongoDB API 连接配置
spring.data.mongodb.uri=mongodb://your-cosmos-account-name:your-primary-key@your-cosmos-account-name.mongo.cosmos.azure.com:10255/todo-db?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000
spring.data.mongodb.database=todo-db
# 应用配置
server.port=8080
注意:请务必将your-cosmos-account-name和your-primary-key替换为你的实际值。数据库名(如todo-db)可以在连接字符串末尾指定。
现在,重启你的Spring Boot应用,它已经连接到Azure云端的Cosmos DB了!尝试通过Postman发送POST请求到http://localhost:8080/api/todos创建一条待办事项,数据将持久化到云数据库中。
第三步:使用Apache Maven部署到Azure App Service
Azure App Service是一个完全托管的Web应用托管服务。我们可以使用Azure提供的Maven插件轻松部署。
3.1 配置Maven插件
在项目的pom.xml文件中,添加Azure Web App Maven插件配置。
<project>
...
<build>
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.10.0</version> <!-- 请使用最新版本 -->
<configuration>
<schemaVersion>V2</schemaVersion>
<resourceGroup>your-resource-group</resourceGroup>
<appName>todo-spring-app-${maven.build.timestamp}</appName>
<runtime>
<os>linux</os>
<javaVersion>java17</javaVersion> <!-- 与你的Spring Boot版本匹配 -->
<webContainer>Java SE</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
</plugins>
</build>
</project>
请将your-resource-group替换为你在Azure上已有的资源组名称。
3.2 通过Maven命令部署
首先,确保你已安装Azure CLI并已登录。在终端中执行:
az login
然后,在项目根目录下,使用Maven打包并直接部署:
mvn clean package azure-webapp:deploy
Maven会自动将应用打包成JAR文件,并部署到Azure App Service。部署成功后,控制台会输出你的应用URL,例如 https://todo-spring-app-123456.azurewebsites.net。现在,你的API已经运行在云端了!
第四步:使用Android Studio创建简易客户端(可选)
为了演示全栈能力,我们使用Android Studio快速创建一个调用云端API的Android应用。
4.1 创建新项目与网络权限
在Android Studio中创建一个新的“Empty Activity”项目。首先,在AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
4.2 添加依赖与实现网络调用
在app/build.gradle.kts的dependencies块中添加Retrofit库(一个流行的HTTP客户端库):
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
然后,创建一个简单的界面(一个按钮和一个文本框)来触发获取待办事项。接着,编写网络请求代码:
// 定义API接口
interface TodoApiService {
@GET("api/todos")
suspend fun getTodos(): List
}
// 数据类(对应后端的TodoItem)
data class TodoItem(
val id: String?,
val task: String,
val completed: Boolean
)
// 在ViewModel或Activity中调用
val retrofit = Retrofit.Builder()
.baseUrl("https://todo-spring-app-123456.azurewebsites.net/") // 替换为你的部署URL
.addConverterFactory(GsonConverterFactory.create())
.build()
val service = retrofit.create(TodoApiService::class.java)
// 在协程中调用
lifecycleScope.launch {
try {
val todos = service.getTodos()
// 更新UI,显示todos列表
} catch (e: Exception) {
// 处理错误
}
}
运行这个Android应用,点击按钮,它就会从部署在Azure上的Spring Boot API获取数据。这完成了从移动端到云后端的完整链路。
总结
通过本实战教程,我们完成了一个完整的云原生应用开发部署周期:
- 使用Java Spring Boot框架快速构建了RESTful API后端。
- 利用Apache Maven管理项目依赖,并通过其Azure插件实现了“一键部署”。
- 将数据持久化到完全托管的Azure Cosmos DB,体验了云数据库的便捷与强大。
- 最终将应用部署到Azure App Service,获得了自动缩放、监控等高可用性特性。
- (可选)使用Android Studio创建了一个客户端,验证了API的可用性。
这个项目清晰地展示了如何将传统开发技能与现代化云平台相结合。Azure提供的丰富服务和工具链,极大地简化了开发、部署和运维的复杂度。你可以以此项目为基础,继续探索Azure的其他服务,如Azure Active Directory用于身份认证、Azure Redis Cache用于提升性能,从而构建更加强大和复杂的企业级应用。



