通过 Pokedex com Spring WebFlux 设置项目 导入项目 Configurando 或 pom.xml Subindo pela primeira 和应用程序 Criando 模型 Criando 和存储库 Inicializando MongoDB Criando 控制器 Testando 应用程序 Testando 事件流 部署 Heroku 结论

2025-06-07

通过 Pokedex com Spring WebFlux 的过程

设置项目

项目重要性

配置pom.xml

Subindo pela primeira vez a applicação

Criando um 模型

Criando um 存储库

MongoDB 的初始版本

创建或控制器

测试应用程序

测试活动流

无需 Heroku 即可部署

结论

您可以使用 Spring Webflux 来创建、读取、更新和删除应用程序,并使用 MongoDB 银行和 Heroku 服务!

项目存储库:https://bit.ly/pokedex-reativo

最后一个教程,您可以使用自己的图鉴,了解它,删除自己的神奇宝贝,并在自己的存储库中删除这些神奇宝贝,并使用事件流端点功能来简单地使用事件流,然后将项目放在一起 文件夹!
库尔蒂乌? Então vamos lá...(ɔ◔‿◔)ɔ

设置项目

安装前请注意:

  • JDK 8 或 9
  • Uma IDE 可以开发,您可以使用IntelliJ
  • Ø Heroku CLI
  • 拥有 Maven 3 环境配置变量
  • 邮差

对于 Maven 3 来说,这是很重要的,Heroku CLI 是这样的...没有任何Clique aqui 和 Maven版本的安装,因此无法在应用程序中使用 ;)

Agora 可以访问Spring Initialzr网站,并根据以下情况进行选择:

  • Spring 反应式 Web
  • Spring Data 反应式 MongoDB
  • 嵌入式 MongoDB 数据库

无组 usaremos:com.pokedex
无神器:reactiveweb

O 软件包名称是自动的!

Spring Initializr deve ficar assim 的用途如下:
Spring初始化程序可作为配置或使用acordo com或教程的常用配置

马上,大家就来吧GENERATE CRTL+,春天的初始化将通过 ZIP 进行,并且您可以通过本地化方式来获取额外的信息

项目重要性

需要额外的资源或可以在 IDE 中使用,无需使用 IntelliJ 或 cliar导入项目

intellij idea 徽标 abrimos 的图像

单击导入项目即可完成所有操作,将项目本地化为 Spring Initialzr 的项目,然后导入即可
图像没有窗口

我在两个选项中都提到了这一点:Maven 是一个重要的项目,它包含了模型中存在的所有信息,并在完成后将项目周围环境的变化进行了 比较! :p
escolhendo maven como projeto 基地

配置pom.xml

相关应用程序,请注意与嵌入的 mongo 相关的顺序,如前所述,seu pom.xml ficará da seguinte forma:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

pom.xml
basta exlcuir o <scope>test</scope>e colocar 依赖于 mongo 嵌入的徽标。

如果应用程序需要正确的顺序,则该应用程序依赖于 estiver depois igual estava,应用程序不支持 iria subir noservidor,pois a mesma não iria encontrar,sua depedendy deverá ficar da seguinte forma:
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
</dependency>

Subindo pela primeira vez a applicação

Vamos ver se nossa aplicação está subindo, no canal do youtube da womakerscode temos um video onde explicamos sobre o servidor Netty, caso tenha alguma dúvida so dar uma passadinha por lá .
在 8080 端口上安装服务器应用程序。

您可以使用“hello world womakerscode”padrão na classe main()

如果没有任何控制台,请System.out.println选择最常用的控制台,并在应用程序的门户中设置相应的语言
应用程序控制台

Criando um 模型

要实现睾丸银行的快速应用,请执行以下操作,并使用 MongoDB 的方法。 Nele ficará salvos nossas variáveis。

软件包小组的成员是com.pokedex.reactiveweb > New > Package > com.pokedex.reactiveweb。型号> 输入
封装模型 sendo gerado no intellij

Dentro dele crie uma nova classe com o nome Pokemon , dentro dessa classe será colocado as informações os pokemons terão, tais como Id, Nome, Poder etc... Dentro dessa classe coloque:

基本的getter 和 settersboolean equalshashcode、 eo toString、 você pode fazer 都是如此 apertando ALT + INSERT> getter/ setter > equals() hashcode() > toString() > OverrideMethods > Constructor

接下来,我们将在 IntelliJ 或 IDE 中使用您所需要的方法!

Criando um 存储库

没有存储库是持久存在的,在com.pokedex.reactiveweb > New > Package > com.pokedex.reactiveweb 中没有任何库。存储库> 输入

提供PokemonRepository名称和界面的软件包

接口是类开发实现中具体使用的抽象技巧和补充技巧

Dentro nessa 界面颜色或顺序:

Spring Data 可以帮助您轻松地进行生活、发送信息,这是一个与 Pokemon String 对象相关的快速接口。

您可以使用ReactiveMongoRepository来编辑全景图,使用的方法有:flux、findByID、finalAll 等。

Agora sim podemos Inicializar nosso banco de bados (͠≖ ʖ͠≖)👌

MongoDB 的初始版本

使用 Mongo Embeded、发送 assim 等,不需要使用其他方法,也可以本地使用。

Na classe Main() criaremos uma chamada do nosso banco de bados, usando o CommandLiner que é uma interface funcional que recebe variável de argumentos em cadeia.. o mesmo deve estar anotado com o @Bean para o spring boot entender que aquilo deve ser processado, enfim, o resultado deve ser o seguinte código:

Aqui vemos algo de differenterente, nao estamos trazendo os métodos padrões (findAll, findById etc) por que estamos trabalhando com um banco de bados embutido, mas caso você queira usar um Mongo Atlas por example, o ReactiveMongoOperations gera essa série de pra você 方法。

Nesse código o .flatMap Consulta o findAll e imprime os bados, eo thenMany faz isso também só que de forma assíncrona, eo subscribe imprime na tela também

Agora se a executarmos veremos que o banco de bados subiu, e os bados inseridos serãomostrados na tela, você terá algo assim:
控制台mostrando os bado que foram salvos

创建或控制器

控制器是一个控制器类,可以执行、更新、删除和闲置神奇宝贝的方法。

com.pokedex.reactiveweb > New > Package > com.pokedex.reactiveweb 中的criá-lo clique com 。控制器> 输入
E repetir esse mesmo processo para criar uma classe

Agora bora criar os métodos que já estamos chegando no resultado Final (•◡•) /

搜寻所有口袋妖怪

Agora você deve criar uma instância e dentro dela terá o método para trazer todos os pokémons, ficará assim:

id 的 Bucando 或 Pokémon

Para Buscar por id, colocaque o método dentro da instância, igual o anterior:

什么是单只神奇宝贝的方法?这是重要的 1 id seja chamado,e quando esse id não for encontrado,trazemos uma reposta HTTP。

如果 defaultIfEmpty 是空的,则可以使用此命令,然后返回NOTFOUND状态

使用 .map() 可以返回一个功能并捕获结果并捕获编辑器 Mono,找到 findById 来返回 Mono

克兰多和萨尔万多是新的神奇宝贝

Para criar um novo e salvar pokémon basta digitalar o código abaixo

Retornará um Mono por que é o que será retornado no repositório。

神奇宝贝更新

Agora vamos 组合了所有 Pokémon 的声音。 Para atualizarmos um pokémon receberemos um id, e uma instância do pokémon com novos valores a serem atualizados.

Vamos começar procurando por id, e se ele for encontrado será atualizado ao contrário será recebido um status NOTFOUND

第二部分代码操作员地图将进行转换,默认情况下为 Mono vazio for retornado com defaultEmpty ele retornará um status NOTOFUND, esse bloco de código poderia também ser feito com if/ else, mas o jeito que fizemos foi do modo declarativo

不包括宝可梦

之前的方法是,删除所有神奇宝贝的方法:

删除 TODOS os Pokémons 的方法

Prontinho、集市中的 CRUD 完整功能、集市中的事件流(部分合法 o/)

Criando um 事件流ᕙ(`▿´)ᕗ

没有控制器的情况下,事件的处理方法是事件属性的类,如果是包模型,则可以使用PokemonEvent,然后进行以下操作:

`

public class PokemonEvent {
    private Long eventId;
    private String eventType;
}

Enter fullscreen mode Exit fullscreen mode


`

Pokémon 包中的类包模型标志 acima,因此可以指定getter 和 settersboolean equalshashcodetoString、você pode fazer tudo isso apertando ALT + INSERT > getter/setter > equals() hashcode() > toString() > OverrideMethods > Constructor

showww,在PokemonController类中进行操作,事件的处理方法如下:

`

 @GetMapping(value = "/events", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<PokemonEvent> getPokemonEvents() {
        return Flux.interval(Duration.ofSeconds(5))
                .map(val ->
                        new PokemonEvent(val, "Product Event")
                );
    }

Enter fullscreen mode Exit fullscreen mode


`

O 间隔 traz 或 tanto de segundos que o meu eventto Serámostrado, nesse caso de 5 em 5 segundos um eventto novo é gerado!

Estamos quase acabando, agora só falta testar nossos 端点 (͡~ ͜ʖ ͡°)

测试应用程序

测试应用程序时,请先执行以下操作,然后使用 main() 方法和启动命令,然后在没有控制台的情况下进行操作,然后再进行操作:
控制台上的兴奋消息

Agora bora pro postman testar 操作系统端点

搜寻所有宝可梦

最初的方法是通过 GET 进行测试,然后将所有 Pokémons 进行射击,没有邮递员进行射击,结果如下:
结果 GET dos pokemons

如果您使用 GET 来操作,则可以对神奇宝贝进行“pegando”操作,可以测试以下内容:“PUT”、“POST”...等,然后再进行操作,然后再进行操作

按 ID 搜寻 Pokémon

Para Buscar por id, basta copiar e colar um id que foi gerado na resposta do GET
通过 ID 寻找神奇宝贝

成为新宝可梦

没有POST请求的必要条件,没有选择原始的正文> JSON格式为 json,数字:

`

   {
        "nome": "IbySaur",
        "categoria": "Semente",
        "habilidades": "OverGrow",
        "peso": 13.0
    }

Enter fullscreen mode Exit fullscreen mode


`

现在,请发送并发送神奇宝贝齐射!
Deverá retornar um STATUS 201 * o quemostra que foi criado com êxito, para ter certeza, vamos voltar no GET , copiar e colar o id gerado, que elemostrá nosso pokémon criado..

O id não precisa colocar pois ele é geradoautomaticamente pelo MongoDB

删除 Pokémon

Agora vamos 删除方法删除全部删除,发送邮件至邮递员 vamos mudar 要求删除

精灵宝可梦邮递员的删除

Vejam que eu coloco o id de algum pokémon que eu queira excluir

Se eu tirar esse id ele vai exlcuir TODOS OS POKÉMONS

测试活动流

Vimos que nosso CRUD está no esquema já, ou seja, está funcionando bem lindão...
Com nossa aplicação iniciada ainda, vamos testar o events Stream, para isso vá até um browser se sua preência e digitale:

http://localhost:8080/pokemons/events

神奇宝贝第 5 回合将不再发生神奇宝贝事件

回复浏览器咨询神奇宝贝

如果没有任何事件流允许,则需要在前面的终点处进行操作,这是 Spring Webflux 的主题。

无需 Heroku 即可部署

快来听听我的应用程序吧,你会发现什么?

相关应用、pom.xml 中的插件说明:

`

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>com.heroku.sdk</groupId>
        <artifactId>heroku-maven-plugin</artifactId>
        <version>3.0.2</version>
      </plugin>
    </plugins>
  </build>
</project>

Enter fullscreen mode Exit fullscreen mode


`

Agora vá até a Pasta da sua aplicação, usando umterminal (eu vou usar o gitbash) , e digitale heroku login , para acessar sua conta no heroku

Irá aparecer uma janela assim pra você:
登录 Heroku

登录后,您可以通过 com 或 Heroku 登录!

Agora 与终端处理器相关
终端进程 o 登录 no heroku

Depois que terminar de carregar, iremos criar um app para hospedar nossa aplicação, faremos isso com o comando heroku create

Eestamos quase lá,seu app foi criado,没有终端 ele vai te gerar um link e essa mensagem:
成功的应用程序

我们很快就能部署

如果您需要独立应用(例如,需要处理程序),请使用以下命令来植入植入物: 重新启动并 mvn clean heroku:deploy
验证操作系统日志...

这是建立成功的重要一步,请务必呼吸!
成功建立feito

PARABÉNSSS sua aplicação subiuuu

威尔·史密斯舞动

要访问更佳的数字 heroku open
Heroku 仪表板

结论

Spring Webflux 是 SpringBoot 的一个模块,可以通过 CRUD 操作来处理事件的顺序,并且永远不会使用应用程序,这取决于实际情况和实际情况

...

您是否知道,对于任何应用功能,是否存在任何问题?与 GitHub 兼容,并且可以通过 github 来实现,并且可以使用 possam aprender assim como você! ʕ•́ᴥ•̀ʔっ

可以从 Github 上下载应用程序 ->
https://bit.ly/pokedex-reativo
从 github 上下载 <3

参考:
Heroku DevCenter
Canal do Youtube da Michelli Brito

Nos vemos na próxima, dêem likesss and compartilhem, e vejam os outros artigos da womakerscode quem quiser me seguir nas redes socias @anabneri #tamojunto

文章来源:https://dev.to/womakerscode/criando-seu-pokedex-com-spring-webflux-mongodb-deploy-no-heroku-21f5
PREV
[教程 Linux] 终端:在非 Linux 下安装程序
NEXT
如何使用 React、Spotify 和 Fauna 创建音乐播放列表 Spotify 是什么?Spotify Web API 入门 Fauna 是什么?Fauna DB 入门 构建应用程序 结论