docker + springboot cli创建一个项目并解析csv文件

首先,我们需要创建一个 Spring Boot 项目,然后添加必要的依赖项和配置。假设你已经有了一个名为 FoodTruckAPI 的项目,我们将在该项目中实现获取 CSV 数据的功能。

  1. 创建一个 Spring Boot 项目:

    spring init --name=FoodTruckAPI --groupId=com.example --artifactId=FoodTruckAPI --dependencies=web,data-jpa FoodTruckAPI
    

    进入项目目录,并创建一个名为 FoodTruckService.java 的服务类,用于处理 CSV 数据:

package com.example.FoodTruckAPI.service;

import com.example.FoodTruckAPI.model.FoodTruck;
import org.springframework.stereotype.Service;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

@Service
public class FoodTruckService {

    public List<FoodTruck> getFoodTrucksFromCSV(InputStream inputStream) {
        List<FoodTruck> foodTrucks = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
            String line;
            boolean skipHeader = true;
            while ((line = br.readLine()) != null) {
                if (skipHeader) {
                    skipHeader = false;
                    continue;
                }

                String[] data = line.split(",");
                FoodTruck foodTruck = new FoodTruck(data[0], data[1], data[2]); // 假设 CSV 中的列依次是名称、类型、地址
                foodTrucks.add(foodTruck);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return foodTrucks;
    }
}

创建一个名为 FoodTruckController.java 的控制器类,用于暴露获取 CSV 数据的接口:

package com.example.FoodTruckAPI.controller;

import com.example.FoodTruckAPI.model.FoodTruck;
import com.example.FoodTruckAPI.service.FoodTruckService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

@RestController
@RequestMapping("/food-trucks")
public class FoodTruckController {

    @Autowired
    private FoodTruckService foodTruckService;

    @GetMapping
    public ResponseEntity<List<FoodTruck>> getAllFoodTrucks() {
        Resource resource = new ClassPathResource("food-trucks.csv");
        try (InputStream inputStream = resource.getInputStream()) {
            List<FoodTruck> foodTrucks = foodTruckService.getFoodTrucksFromCSV(inputStream);
            return ResponseEntity.ok(foodTrucks);
        } catch (IOException e) {
            e.printStackTrace();
            return ResponseEntity.status(500).build();
        }
    }
}

创建一个名为 FoodTruck.java 的模型类,用于表示食品卡车数据:

package com.example.FoodTruckAPI.model;

public class FoodTruck {
    private String name;
    private String type;
    private String address;

    public FoodTruck() {
    }

    public FoodTruck(String name, String type, String address) {
        this.name = name;
        this.type = type;
        this.address = address;
    }

    // Getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
  1. 将 CSV 文件 food-trucks.csv 放在 src/main/resources 目录下,并填写一些示例数据。

  2. 编写 Dockerfile 用于 Docker 容器化应用:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/FoodTruckAPI-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

构建 Docker 镜像并运行容器:

docker build -t food-truck-api .
docker run -p 8080:8080 food-truck-api

现在,你的 Spring Boot 项目已经可以从 CSV 文件中读取数据,并通过 API 提供给外部使用了。你可以通过访问 http://localhost:8080/food-trucks 来查看获取的食品卡车数据。请确保你的系统中安装了 Docker 和 Java 环境,以便顺利运行该项目。

整体目录结构如下:

FoodTruckAPI
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── FoodTruckAPI
│   │   │               ├── controller
│   │   │               │   └── FoodTruckController.java
│   │   │               ├── model
│   │   │               │   └── FoodTruck.java
│   │   │               └── service
│   │   │                   └── FoodTruckService.java
│   │   └── resources
│   │       └── food-trucks.csv
│   └── test
│       └── java
└── Dockerfile

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值