Xem toàn bộ series bài viết hướng dẫn xây dựng ứng dụng Questions Management tại đây.
Composite Service là những service sẽ gọi các Core Service khác nhau để thực hiện việc transform, tổng hợp dữ liệu từ những Core Service đó. Trong giai đoạn 1 này, ứng dụng Questions Management của chúng ta sẽ có 2 Composite Service, một cái đảm nhận việc tổng hợp thông tin về các câu hỏi bao gồm: category, nội dung câu hỏi và các lựa chọn của các câu hỏi đó và một cái nữa là cho các lựa chọn của câu hỏi. Cho các câu hỏi, service này có tên là Composite Question Service. Trong bài viết này, mình sẽ hướng dẫn các bạn cách tạo Spring Boot project cho service Composite Question Service các bạn nhé!
Các bước tạo một Spring Boot project mình đã hướng dẫn cho các bạn. Ở đây, mình chỉ đề cập một số điểm quan trọng trong quá trình tạo project cho Composite Question Service mà thôi.
Ở cửa sổ New Spring Starter Project, sau khi điền thông tin về project của chúng ta, phần Location các bạn cũng cần trỏ đến thư mục của project questions-management:
Như các bạn thấy, trong thư mục của project questions-management, mình đã thêm một thư mục composite bên trong thư mục này để chứa tất cả các project liên quan đến Composite Service.
Ở phần chọn các dependencies cần sử dụng cho project composite-question-service, vì Composite Service sẽ không có những thao tác đến database nên chúng ta chỉ sẽ sử dụng những dependencies sau các bạn nhé:
- Reactive Web: xem thêm Giới thiệu về Spring WebFlux
- Lombok: xem thêm Giới thiệu về Project Lombok
- DevTools: xem thêm Giới thiệu về công cụ DevTools trong Spring Boot
Kết quả:
Tiếp theo, mình sẽ chỉnh sửa lại project này một xí để nó sử dụng parent project của project questions-management.
Trong tập tin pom.xml của project này, mình sẽ xoá phần <parent> và <properties> hiện tại để khai báo sử dụng parent project của project questions-management như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>composite-question-service</artifactId> <name>composite-question-service</name> <description>Composite Question Service for Questions Management</description> <parent> <groupId>com.huongdanjava</groupId> <artifactId>questions-management</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
Rồi khai báo project composite-question-service là một module của project questions-management như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.huongdanjava</groupId> <artifactId>questions-management</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>Questions Management System</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <modules> <module>core/core-category-service</module> <module>core/core-question-service</module> <module>core/core-option-service</module> <module>composite/composite-question-service</module> </modules> </project> |