Для тех, кто следит за этим блогом, неудивительно, что я часто использую InfluxDB. Мне нравится тот факт, что это настоящая специализированная база данных (временные ряды) со многими функциями, а также с поддержкой предприятия.
Весна также является одним из инструментов моего выбора. Таким образом, в этом блоге мы интегрируем пружину с микрометром и InfluxDB.
Нашим приложением будет отдых API для рабочих мест. Первоначально он будет получать задания из API Github, как показано здесь .

Давайте начнем с пом
|
01
02
03
04
05
06
07
08
09
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
|
<?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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> </parent> <groupId>com.gkatzioura</groupId> <artifactId>DevJobsApi</artifactId> <version>1.0-SNAPSHOT</version> <build> <defaultGoal>spring-boot:run</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> </dependencies></project> |
Давайте добавим репозиторий заданий для GitHub.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package com.gkatzioura.jobs.repository;import java.util.List;import org.springframework.http.HttpMethod;import org.springframework.stereotype.Repository;import org.springframework.web.reactive.function.client.WebClient;import com.gkatzioura.jobs.model.Job;import reactor.core.publisher.Mono;@Repositorypublic class GitHubJobRepository { private WebClient githubClient; public GitHubJobRepository() { } public Mono<List<Job>> getJobsFromPage(int page) { return githubClient.method(HttpMethod.GET) .uri("/positions.json?page=" + page) .retrieve() .bodyToFlux(Job.class) .collectList(); }} |
Модель работы
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
package com.gkatzioura.jobs.model;import lombok.Data;@Datapublic class Job { private String id; private String type; private String url; private String createdAt; private String company; private String companyUrl; private String location; private String title; private String description;} |
Контроллер
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package com.gkatzioura.jobs.controller;import java.util.List;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.gkatzioura.jobs.model.Job;import com.gkatzioura.jobs.repository.GitHubJobRepository;import reactor.core.publisher.Mono;@RestController@RequestMapping("/jobs")public class JobsController { private final GitHubJobRepository gitHubJobRepository; public JobsController(GitHubJobRepository gitHubJobRepository) { this.gitHubJobRepository = gitHubJobRepository; } @GetMapping("/github/{page}") private Mono<List<Job>> getEmployeeById(@PathVariable int page) { return gitHubJobRepository.getJobsFromPage(page); }} |
И последнее по порядку, но не по значению главное приложение.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
package com.gkatzioura;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration;@SpringBootApplication@EnableAutoConfiguration(exclude = { ReactiveSecurityAutoConfiguration.class})public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }} |
В следующем блоге мы собираемся интегрироваться с InfluxDB и микрометром.
|
Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. См. Оригинальную статью здесь: Spring Boot и Micrometer с InlfuxDB. Часть 1. Базовый проект Мнения, высказанные участниками Java Code Geeks, являются их собственными. |