avatar

Cài đặt môi trường, chuẩn bị ứng dụng Springboot

Trong bài đầu tiên, chúng ta cùng nhau cài đặt môi trường phát triển cho ứng dụng Java Springboot

Đăng vào
5 phút

title

Mục lục

1. Giới thiệu chung

Trong chuỗi bài này, chúng ta cùng nhau tìm hiểu cách phát triển và triển khai một ứng dụng quản lý học sinh sử dụng Spring boot trên Kubernetes (k8s). Qua việc triển khai ứng dụng, chúng ta sẽ tìm hiểu những thành phần cơ bản và cách cấu hình ứng dụng với k8s. Bài viết đầu tiên sẽ trình bày về việc chuẩn bị môi trường phát triển, tạo mới project và giới thiệu qua về ứng dụng chúng ta sẽ phát triển/triển khai.

2. Cài đặt môi trường

Sử dụng MicroK8s khi chạy lệnh kubectl ... thì cần kèm theo microk8s đằng trước như: microk8s kubectl ..., để ngắn gọn hơn thì bạn có thể làm như sau:

cd $HOME
mkdir .kube
cd .kube
microk8s config > config

kubectl config use-context microk8s

3. Setup Spring boot application

Ứng dụng quản lý học sinh viết bằng Spring Boot đơn giản gồm 2 API: Tạo mới học sinh, lấy danh sách học sinh. Bạn có thể tham khảo source code ở đây.

Truy cập Spring Initializr để tạo mới một Spring Boot project và thêm một số thông tin của project như:

Tạo mới project Spring boot với Spring Initializr

Thông tin project và các dependencies:

ProjectValue
Tênk8s-springboot-series
Build toolMaven
Spring Boot version2.7.6
Java version11
DependenciesSpring Web
Spring Boot DevTools
Lombok
Spring Configuration Processor

Class Student dưới đây định nghĩa các trường thông tin về Student:

src/main/java/com/vntechies/k8sspringbootseries/entity/Student.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private UUID id;
    private String fullName;
    private String dateOfBirth;
    private String hometown;
    private Gender gender;

    public static Student createFrom(CreateStudentRequest request) {
        Student student = new Student();
        student.setId(UUID.randomUUID());
        student.setFullName(request.getFullName());
        student.setDateOfBirth(request.getDateOfBirth());
        student.setHometown(request.getHometown());
        student.setGender(request.getGender());
        return student;
    }
}

Class StudentControllers dưới đây định nghĩa các API như:

  • POST /api/students: tạo mới Student.
  • GET /api/students: lấy danh sách Student.
src/main/java/com/vntechies/k8sspringbootseries/controllers/StudentControllers.java
@RestController
@RequestMapping(value = "/api/students")
public class StudentControllers {

    private final IStudentService iStudentService;

    public StudentControllers(IStudentService iStudentService) {
        this.iStudentService = iStudentService;
    }

    @PostMapping
    public ResponseEntity<StudentResp> createStudent(@RequestBody CreateStudentRequest request) {
        return new ResponseEntity<>(iStudentService.createStudent(request), HttpStatus.CREATED);
    }

    @GetMapping
    public ResponseEntity<List<StudentResp>> getAllStudents() {
        return new ResponseEntity<>(iStudentService.getAll(), HttpStatus.OK);
    }
}

Class StudentServiceImpl dưới đây định nghĩa các logic tạo mới Student và lấy danh sách Student:

src/main/java/com/vntechies/k8sspringbootseries/services/StudentServiceImpl.java
@Service
public class StudentServiceImpl implements IStudentService {

    private static final ObjectMapper objectMapper = new ObjectMapper();
    private static final List<Student> STUDENTS = new ArrayList<>();

    @Override
    public StudentResp createStudent(CreateStudentRequest request) {
        Student student = Student.createFrom(request);
        STUDENTS.add(student);
        return objectMapper.convertValue(student, StudentResp.class);
    }

    @Override
    public List<StudentResp> getAll() {
        List<StudentResp> studentRespList = new ArrayList<>();
        for (Student student : STUDENTS) {
            StudentResp studentResp = objectMapper.convertValue(student, StudentResp.class);
            studentRespList.add(studentResp);
        }
        return studentRespList;
    }
}

4. Tổng kết

Trong bài mở đầu series về triển khai ứng dụng spring boot với kubernetes này đã giới thiệu về mục tiêu của series, các bước chuẩn bị về môi trường cũng như giới thiệu qua về spring boot application mà sẽ sử dụng. Ở bài tiếp theo thì chúng ta sẽ đi tìm hiểu về cách đóng gói spring boot container với Pod trong Kubernetes.