农业数字化是当下的热点,而Spring Boot凭借其快速开发、开箱即用的特性,成为构建后端服务的首选框架。本文将从零开始,带领你使用Spring Boot搭建一个功能完整的农业APP后端,包括作物管理、环境传感器数据采集、告警通知等核心模块。无需任何Spring Boot经验,只要你有Java基础,就能跟上节奏。
一、项目准备与环境搭建
工欲善其事,必先利其器。我们需要准备以下工具:
- JDK 11+
- IntelliJ IDEA 或 Eclipse
- MySQL 8.0(或H2内存数据库用于测试)
- Postman(测试API)
使用 Spring Initializr(https://start.spring.io/)快速生成项目骨架。选择以下依赖:Spring Web、Spring Data JPA、MySQL Driver、Lombok、Validation。下载后导入IDE,项目结构即刻呈现。
二、数据库设计与JPA实体
2.1 核心表设计
农业APP涉及三个核心实体:Crop(作物)、Sensor(传感器)、Alert(告警)。关系如下:
- Crop: id, name, type, plantingDate, area
- Sensor: id, cropId, type (温度/湿度/光照), value, recordTime
- Alert: id, sensorId, message, severity, createTime
2.2 JPA实体类实现
@Entity
@Getter @Setter @NoArgsConstructor
public class Crop {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String type;
private LocalDate plantingDate;
private Double area;
}
类似地创建Sensor和Alert实体,并定义好关联映射(一对多、多对一)。使用Lombok简化getter/setter,提高开发效率。
三、实现RESTful API
3.1 作物管理接口
创建CropController,提供CRUD操作:
GET /api/crops– 获取所有作物列表POST /api/crops– 新增作物GET /api/crops/{id}– 查询单个作物PUT /api/crops/{id}– 修改作物信息DELETE /api/crops/{id}– 删除作物(软删除可选)
使用Service层处理业务逻辑,Controller只负责接收请求和返回响应。配合全局异常处理(@ControllerAdvice)统一错误格式。
3.2 环境数据采集与查询
Sensor数据通过物联网设备定时发送到POST /api/sensors接口。我们实现一个批量接收的端点:
@PostMapping("/batch")
public ResponseEntity<String> saveBatch(@RequestBody List<Sensor> sensors) {
sensorService.saveAll(sensors);
return ResponseEntity.ok("OK");
}
同时提供按作物和时间范围查询的接口:GET /api/sensors?cropId=1&start=2025-01-01&end=2025-01-31,支持分页和排序。
3.3 智能告警服务
当传感器数值超过阈值(如温度>35°C)时,系统自动生成告警。我们在SensorService的save方法中加入检测逻辑:
if (sensor.getValue() > threshold) {
Alert alert = new Alert();
alert.setMessage("高温告警:" + sensor.getType() + " 当前值" + sensor.getValue());
alert.setSeverity("HIGH");
alertService.save(alert);
}
客户端通过GET /api/alerts?unread=true获取未处理告警,支持标记已读。
四、前后端集成与部署
4.1 跨域配置
前端Vue应用请求后端时,需要配置CORS:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**").allowedOrigins("http://localhost:8081");
}
}
4.2 打包部署
使用Maven打包成jar:mvn clean package,然后通过java -jar target/agri-app-0.0.1-SNAPSHOT.jar运行。也可以结合Docker容器化部署,创建Dockerfile:
FROM openjdk:11-jre-slim
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
五、总结与扩展建议
通过本文的实战,你已经掌握了使用Spring Boot构建农业APP后端的完整流程:从项目初始化、JPA数据持久化到REST API开发,再到前后端集成。这个项目可以进一步扩展:
- 集成Spring Security实现用户认证与权限管理。
- 使用WebSocket推送实时传感器数据。
- 对接时序数据库(如InfluxDB)处理高频物联网数据。
- 引入Swagger自动生成API文档。
农业APP的潜力巨大,Spring Boot能让你快速迭代。希望这篇教程能为你打开一扇门,如果遇到问题,欢迎在评论区交流。Happy Coding!