Por favor, faz a parte de testes unitários, vai ajudar bastante para quem precisa de um insight de como começar, libs a utilizar e como pensar no teste. Tudo de melhor sempre 👊👊
Muito bom, continuando o projeto com os testes. Acho de grande valia uma série nesse sentido. Ir melhorando e aumentando a complexidade do projeto em nível pleno.
Seria massa fazer um projeto simples de API do zero com TDD, dessa forma você ajudaria muito a galera com dois assuntos legais que é teste unitário e TDD. Ou as vezes até refazer esse mesmo projecto com TDD. Parabéns pelo canal.
Parabéns, Kipper. Muito massa teus ensinamentos. Isso é uma aula gratuita e de qualidade. Hoje domingo, eu tirei pra ficar descansando e pensei 'acho que vou ver algum desafio tecnico da Fernanda e vou fazer. ai eu to vendo teu video e vou fazer por conta propria. No começo, eu via e copiava. Hj me sinto mais confiante pra fazer só mesmo errando. Prefiro até. A gente evolui muito.
Muito incrivel ver a documentação, e a implementação no seu vídeo, parabéns! Tive um projeto em Java com Spring na Empresa que atuei um tempo atrás por isso sempre me mantenho atualizado mesmo hoje sendo Mobile com Flutter lá no trabalho. Excelente vídeo de verdade! Obs.: Implementações com AWS são muito usadas pelas empresas, seja usando S3, dynamoDb e afins... projetos que envolvam implementações com AWS de fato te preparam para o mercado, seu video faz a total diferença. Parabéns.
Não sou do Back, não sou do Java, muito menos manjo algo de Spring, mas adorei o vídeo! Mesmo não entendendo a maioria do conteúdo, é muito satisfatória a maneira que o conteúdo é explicado no vídeo. Show de bola!
Ainda nem terminei de assistir, mas quero parabenizar por este vídeo e por todo conteúdo que tu tens disponibilizado no teu canal. Conteúdo de qualidade, bem explicado, didática muito clara e objetiva. Com certeza, tua paixão pela tecnologia está ajudando muitos desenvolvedores, independente da "senioridade", a evoluir pessoal e profissionalmente. 👏👏👏👏
Nossa, que conteúdo maravilhoso!! Assisti e já salvei para tentar fazer junto passo a passo haha adoro o seu canal, ajuda demais a todos! Eu que estou começando então, é maravilhoso! Obrigada mesmo 💖🙏🚀
jesus cristo eu caí aqui de paraquedas... que pesadelo fazer essa bobeirinha em java haha vcs são malucos mesmo. Mas muito bem explicado a encapsulação de responsabilidade e das chamadas recursivas 👏👏
Muito bom Fernanda! Você nunca deixa a desejar! Já estava procurando sobre aplicações com email service e AWS, aí vem você e entrega tudo!!! Agora só estou esperando aquele vídeo sobre TDD com JUnit e Mockito eim!
Pow que conteúdo maneiro, excepcional a sua atenção e paciência na hora de ensinar o conteúdo para os alunos na execução da programação. E o tema do vídeo foi o mais incrível 😯 obrigado Kipper 🙏❤🥷
Quem estiver vendo o vídeo atualmente e estiver com esse erro no pom.xml -> Dependency conflict in aws-java-sdk-ses: commons-logging:commons-logging:1.2 conflict with 1.1.3(Maven dependency conflict) 3.0.0+ basta adicionar esse trecho de código antes do bloco de dependencias
Acho que a complexidade do desafio na real era maior, pois não era criar abstração para dois email service provider, mas sim uma abstração between two email service providers. Ou seja, provavelmente eles querem que o output de um service seja manupulado na abstração e seja enviado como input de outro service. Teria sido legal ver por completo, mesmo que ficasse ainda mais longo! Parabéns pelo conteúdo!! 🙌
mas o controlador ja faz isso. É so guardar o request de um provider com o remetente de outro, ela so não criou pro outro e usou o email pessoal, não ?? 🤔
1. Em relação à injeção de dependências, você poderia optar por usar a anotação @RequiredArgsConstructor do Lombok e declarar as dependências como private final. Isso não apenas torna o código mais conciso, mas também fortalece a imutabilidade. 2. Dependendo da complexidade e do tamanho da sua aplicação, seria interessante estruturá-la em módulos do Maven. Isso facilitaria o gerenciamento de dependências e minimizaria os riscos de violações das regras de arquitetura limpa por parte dos desenvolvedores. 3. Notei um pequeno deslize em sua implementação que poderia ser melhorado: o controller EmailSenderController deveria depender da abstração EmailSenderUseCase em vez da implementação EmailSenderService. Isso está mais alinhado com o princípio da inversão de dependência, que sugere depender de abstrações e não de implementações concretas.
Fernanda parabéns, vc foi uma das pessoas que me ajudaram a entrar no mundo Java com seus conteúdos. Mas se eu não estiver engando, quando usamos dependência via construtor não precisamos passar o autowired, acho que essa mudança veio no spring 3. E sim teste seria muito top e vc poderia fazer uma trilha implementando os outros serviços desse repositório da Uber, sei que vc é fera tbm no javascript, pq não fazer essa série implementando várias techs
como estudante de java, é muito bom encontrar conteúdo que não seja CRUD... mesmo assim, achei difícil toda essa lógica de interfaces de regras de negócio, interfaces de serviço. Mas é isso mesmo, tudo que é novidade incomoda rsrs... parabens Fernanda, e obrigado.
Fê, seus vídeos são excelentes. Aprendendo muito aqui. Muito obrigado e parabéns! Só um dica: o tamanho da fonte do código no IntelliJ pode ser um pouco maior, já que tem bastante espaço vazio no lado direito da tela. Pra quem assiste ao vídeo em telas menores, aumentar o zoom de exibição ajuda bastante.
Você usa o clockify, track de tempo e dinheiro, tipo você coloca seu projetos e usa o start, vai contabilizando tempo e dinheiro gasto em cada projeto, tanto para cobra algum cliente, quanto para você mesmo veja quanto tempo e dinheiro está invetino em algum projeto
Bem bacana esse exemplo, foge um pouco dos tradicionais CRUD's, mas parece ser algo para Júniors mais experientes ou plenos
10 หลายเดือนก่อน
Duvidas: 1. No minuto 27:34 você adiciona na mão o e-mail do remetente, porque não fez usando buscando de algum arquivo de configuração ou variável de ambiente? Geralmente implementa-se assim ocultando coisas deste tipo do condigo. Qual seria a melhor solução ou boa prática neste caso? 2. Ainda sobre o minuto 27:34 como faria para buscar o e-mail de um arquivo de configuração, de uma variável de ambiente, ou secret manager da AWS; de forma que não expusesse um e-mail diretamente no código? Como faria aplicando a melhor pratica? 3. No minuto 29:05 você usou um try catch, capturando a exceção e mandando para frente. Porque ele foi implementado na classe de EmailSenderService? Existe outra abordagem que não seja lançando exceção? Como ficaria, p.ex., se eu quisesse mandar uma notificação que houve erro no envio?
perfeito o vídeo, aprendi bastante depois faz um vídeo mostrando como criar testes unitários e de integração, boas práticas na criação desses testes, etc...
Olá. Não sei se fez em vídeos posteriores, mas você importou o Lombok para o projeto, e não usou. De repente seria legal mostrar para o pessoal como funcionaria a injeção de dependência por exemplo, sendo auxiliado pelo Lombok utilizando RequiredArgsConstructor a partir da definição das propriedades como final, você acabaria não precisando escrever essas injeções por construtor com o Autowired, e deixaria o código um pouco mais clean. No mais, sua didática é impressionante Fernanda, parabéns (:
Por favor, faça um video que contenha o seguinte: API Rest + Testes Unitarios + Docker com Deploy na Nuvem (Railway ou outra plataforma). Obrigado por compartilhar seu conhecimento!
No momento que estou mandando esse comentário, estou no minuto 30:25, estou curtido, legal que você sabe explica as etapas e o porque esta sendo implementado de tal maneira, mas acredito que o segundo service não era necessário nesse caso, compreendo o que disse ta dahora o video. Considerando que seus clients estão chamando a interface, as implementações precisarão respeitar essa interface, igual você anotou... Ai depois não seria apenas criar uma nova implementação pensada na outra infla, e com @Qualifier("") você apontava ?
Fico feliz que você esteja gostando, André 💜 Pois é, tem muita questão de projeto e arquitetura de solução. Às vezes um time vai preferir seguir uma estrutura diferente, e tá tudo bem, é questão de preferência.
Meus parabéns, continue dando aulas, ajuda muitooo. Tenho 19 anos e estou te acompanhando constantemente. Uma dúvida, ali na parte do EmailSenderGateway eu tive que colocar o @Component, porque estava me dando um erro de "Could not autowire. No beans of 'EmailSenderGateway' type found" E so dessa maneira que eu consegui resolver, porque o Spring não estava conseguindo achar o construtor, e ai que esta a minha pergunta, como que na tua aplicação funcionou kkk
Que conteúdo incrível, Fernanda! Obrigado por nos auxiliar tanto a entender esses conceitos mais complexos, sua didática é incrível! Fiquei com uma dúvida em relação a interface de Gateway. Se fizermos o teste completo, implementando outro email provider, devemos implementar a mesma interface de gateway para essa nova implementação? Como o Java identifica qual o email provider que queremos utilizar?
Só faltou a parte de failover que está no desafio, se um provider falhar tem que fazer fallback para outro e garantir HA. queria ver algum algoritimo de circuit break =/..
@@edmilsonferreira5204 o erro estava na parte do regions, aparentemente o spring não conseguiu ler o arquivo "application.properties". Dai precisei por na mão as credentials e a region. No meu caso deu bom.
Okay, Injectou o EmailSenderService conhece o EmailSenderGateway e o Ses tem que implementar, dessa forma o Spring injecta automaticamente a classe, mas e se tiver outras classes que implementam o gateway ao mesmo tempo, como é que fica?
É possível ter mais de uma implementação, mas será necessário diferencia-lás. Há várias formas de fazer isso, uma delas é adicionar a anotação Qualifier com um nome único da implementação na definição da classe e usar a mesma anotação quando fizer a injeção de dependência do atributo que faz menção a interface. Recomendo a leitura do artigo Spring Bean Names do site Baeldung.
Fê, enquanto fazia o projeto, decidi eu mesmo procurar onde encontrar a dependência, ao invés de copiar. Acontece que foi muito difícil encontrar, tantas versões, nenhuma documentação clara na AWS sobre a diferença entre as versões. Fui, então, com a versão mais recente. Só que a API mudou muuuuito! Eles passaram a utilizar um padrão diferente e achei muito mais verboso, confuso. Dito isso, queria sugerir: 1. O que acha de fazer um vídeo falando sobre onde encontrar e como navegar nesse mar de dependências que são publicados? 2. Analisar a atualização na api e mostrar como aprender a implementar quando a documentação é ruim.
Sei como é, Lucas! Às vezes é muito chato pesquisar em algumas documentações pq é difícil entender o que estão querendo nos dizer, às vezes os exemplos são péssimos tbm. Acho uma boa um vídeo falando disso, muito obrigado pela ideia 💜
Estou temdo dificuldade aqui com a dependencia da aws também, só confiando não funcionou, busquei a versão mais recente e também não está funcionando. no pom está OK, não da erro nenhum, mas na hora de adicionar no condigo o intelij não acha a dependencia, e mesmo tentanto importar na mão, não esta dando certo.
Oii, @@joserodrigues5899 Tenta dar uma olhada no comentário que eu deixei pinado, parece ter ajudando o pessoal. Depois também dá uma olhada no repositório da solução que eu deixei no link do vídeo e compara com o seu projeto
A documentação poderia ser feita usando o Swagger. É bem tranquilo. Uma dúvida, se você tivesse que fazer alguma fazer uma validação de negocio. Digamos que a ubber tem uma lista de palavras proibidas no corpo do email. Essa validação teria que ficar ali no Core correto? Pois é parte do caso de uso. Como ficaria essa implementação?
Olá, alguns milhões de anos depois, hoje estava fazendo este teste e me deparei com um erro: Error: Couldn't connect to server Durante o teste, voce abriu o Insomnia nesta parte e não consegui fazer igual.
Oi gente! Caso o meu Use Case fosse retornar algo, para um Presenter por exemplo, a classe EmailResponse que seria um DTO assim como o EmailResquet, onde ela ficaria, também no Core, ou seria um DTO da camada de Infra ou quem sabe da Application? O meu Controller sendo da camada mais externa, por usar Framework, ele pode usar um DTO da camada mais interna Core "(por isso a minha dúvida)?
O negócio mesmo é no code, muito mais rápido, não precisa saber tantos detalhes técnicos. No code tem uma grande vantagem por ganhar tempo, o que as empresas mais precisam atualmente
a questão não é se é rápido codar ou não, mas sim a escalabilidade disso, como você implementaria uma escalabilidade para um sistema no-code para que tenha 2 milhões de requisições por SEGUNDO em um código gerado automaticamente? como você implementaria um sistema desses para fazer requisições para aws sem derrubar tudo por excesso de requisições ? Não dá. NoCode e LowCode existe a vários e vários anos, são muitas questões para colocar em jogo além do tempo de desenvolvimento de um projeto. Um sistema no-low code gera um código já foi mastigado por um programador que projetou e implementou a plataforma, e você fica preso a isso.
@@riseunk0 elas são bastante adaptativas hoje em dia. Da pra fazer tudo e mais um pouco, esse é o futuro, é rápido. É isso que as empresas devem se preocupar, tempo, se demorarem pra entregar algo, ficam pra trás, por isso devem desenvolver cada vez mais rápido. O Banco do Brasil tem utilizado no code na maior parte dos seus sistemas atualmente por exemplo.
@@masterthug8647 Tente fazer um algoritmo de recomendação de produto simples, estilo de um e-commerce, se tiver alguma ideia de como implantar isso eu realmente quero saber.
Excelente o vídeo! Mas uma dúvida, quando criamos uma service (ou controller e afins) e anotamos ela, o spring já não entende que o construtor já ganha um autowired por padrão? Ou você colocou essa última anotação só pra deixar explícito mesmo?
👉 Livro Arquitetura Limpa
amzn.to/48sC8g2
Por favor, faz a parte de testes unitários, vai ajudar bastante para quem precisa de um insight de como começar, libs a utilizar e como pensar no teste. Tudo de melhor sempre 👊👊
Boaa! Vou fazer sim, será um dos próximos videos do canal 💜
Muito bom, continuando o projeto com os testes. Acho de grande valia uma série nesse sentido. Ir melhorando e aumentando a complexidade do projeto em nível pleno.
@@kipperdevestou aguardando 🎉
Já tem o video dos testes unitários?
Já tem esse vídeo ?
Que show de conteúdo Fernanda passei pro time inteiro aqui! Abraços e continue por favor
Show, valeuu Taylson! 💜
fico assustado ao perceber que não sei NADA kkkkkkk muito foda o conteúdo..
Seria massa fazer um projeto simples de API do zero com TDD, dessa forma você ajudaria muito a galera com dois assuntos legais que é teste unitário e TDD.
Ou as vezes até refazer esse mesmo projecto com TDD.
Parabéns pelo canal.
Parabéns, Kipper. Muito massa teus ensinamentos. Isso é uma aula gratuita e de qualidade. Hoje domingo, eu tirei pra ficar descansando e pensei 'acho que vou ver algum desafio tecnico da Fernanda e vou fazer. ai eu to vendo teu video e vou fazer por conta propria. No começo, eu via e copiava. Hj me sinto mais confiante pra fazer só mesmo errando. Prefiro até. A gente evolui muito.
Te acho tão inteligente. As vezes acho que nunca vou mandar bem em programação de verdade.
Vai sim, Stefany! É tudo questão de prática e estudo
Confia em você 💜
Muito incrivel ver a documentação, e a implementação no seu vídeo, parabéns! Tive um projeto em Java com Spring na Empresa que atuei um tempo atrás por isso sempre me mantenho atualizado mesmo hoje sendo Mobile com Flutter lá no trabalho.
Excelente vídeo de verdade!
Obs.: Implementações com AWS são muito usadas pelas empresas, seja usando S3, dynamoDb e afins... projetos que envolvam implementações com AWS de fato te preparam para o mercado, seu video faz a total diferença. Parabéns.
Não sou do Back, não sou do Java, muito menos manjo algo de Spring, mas adorei o vídeo! Mesmo não entendendo a maioria do conteúdo, é muito satisfatória a maneira que o conteúdo é explicado no vídeo. Show de bola!
Ainda nem terminei de assistir, mas quero parabenizar por este vídeo e por todo conteúdo que tu tens disponibilizado no teu canal.
Conteúdo de qualidade, bem explicado, didática muito clara e objetiva.
Com certeza, tua paixão pela tecnologia está ajudando muitos desenvolvedores, independente da "senioridade", a evoluir pessoal e profissionalmente.
👏👏👏👏
Nossa, que conteúdo maravilhoso!! Assisti e já salvei para tentar fazer junto passo a passo haha adoro o seu canal, ajuda demais a todos! Eu que estou começando então, é maravilhoso! Obrigada mesmo 💖🙏🚀
Obrigadaa Malu, fico feliz DEMAIS que o video tenha ajudado de alguma forma 😊
jesus cristo eu caí aqui de paraquedas... que pesadelo fazer essa bobeirinha em java haha vcs são malucos mesmo. Mas muito bem explicado a encapsulação de responsabilidade e das chamadas recursivas 👏👏
Muito bom Fernanda! Você nunca deixa a desejar! Já estava procurando sobre aplicações com email service e AWS, aí vem você e entrega tudo!!! Agora só estou esperando aquele vídeo sobre TDD com JUnit e Mockito eim!
Que bom que gostouu, Deyvis 💜
Hahah vou fazerr
Muito bom. sou dev .net core mas gosto de ver outros projetos e outras linguagens de programação e vc explica muito bem.
Muito obrigadaa, Edson 💜
Acho legal isso que você faz, você acaba se mantendo atualizado sobre outras tecnologias!
Pow que conteúdo maneiro, excepcional a sua atenção e paciência na hora de ensinar o conteúdo para os alunos na execução da programação. E o tema do vídeo foi o mais incrível 😯 obrigado Kipper 🙏❤🥷
Que bom que gostouu, Caio 💜
Muito obrigada pelo carinho
Amassando todo e qqr nlw ou aula da rockeat seat. Gesus, apredam com essa mulher como se faz aula ....
Melhor exemplo que já vi e o mais claro de arquitetura limpa, obrigado!
Arquitetura exagonal, que delicia, é lindo demais ver funcionando nessa arquitetura
fernanda, você é minha inspiração pra ser dev. meu deus, que conteúdo incrível
Muito obrigadaa, @gabiqss 💜
Desejo muito sucesso na sua jornada!
Vídeo muito bom! Continuo firme estudando Spring pelo seu canal, muitíssimo obrigado!!!
Que legal, Welber!
Fico feliz em estar ajudando 💜
Seus vídeos são os melhores!! Parabéns pelo conteúdo, bom demais.
Muito obrigadaa, @nfs03 💜
Vídeo muito bom, inclusive para quem tá iniciando no Spring, como eu. Sou novo no canal e já vi que tenho 75 vídeos para maratonar 😅
Muito top o desafio sendo resolvido, estou ansiosoooo pelo teste unitário
Ótimo vídeo. Muito didático. Sim, queremos vídeos tratando sobre testes unitários. Obrigado!
Muito obrigadaa 💜
Boa! Já está na lista dos próximos vídeos!
fernanda você é 10 demais, não tem como tô sempre aqui comentando nos seus vídeos e parabéns demais!!
Fernanda, teu canal é muito bom! Parabens.
Muito obrigada Alex! 💜
é uma boa fazer os testes unitários desse desafio! Abração!!!!
Abraço, @fplanger 💜
Já coloquei lista dos próximos vídeos!
Muito legal e enriquecedor os seus vídeos Fernanda! Continue assim e todo sucesso do mundo, obrigado por compartilhar!
Nossa, Fer! Teus vídeos me ajudam mt !!!!!!
Iniciando minha carreira para tentar ser um dev na área de back!!!
Parabéns pelo conteúdo o/
Boaa, Vianna, que show!!
Desejo todo o sucesso pra você 💜
Quem estiver vendo o vídeo atualmente e estiver com esse erro no pom.xml -> Dependency conflict in aws-java-sdk-ses: commons-logging:commons-logging:1.2 conflict with 1.1.3(Maven dependency conflict) 3.0.0+
basta adicionar esse trecho de código antes do bloco de dependencias
commons-logging
commons-logging
1.2
Vlw irmão
Não entendo nada, sou consultor empresarial. Mas achei fascinante.
Achei seu canal aqui na TL e parabéns manda muito com Java.
Sucesso!
Acho que seria Interresante um video sobre o modulo web flux do spring
Acho que a complexidade do desafio na real era maior, pois não era criar abstração para dois email service provider, mas sim uma abstração between two email service providers. Ou seja, provavelmente eles querem que o output de um service seja manupulado na abstração e seja enviado como input de outro service. Teria sido legal ver por completo, mesmo que ficasse ainda mais longo! Parabéns pelo conteúdo!! 🙌
mas o controlador ja faz isso. É so guardar o request de um provider com o remetente de outro, ela so não criou pro outro e usou o email pessoal, não ?? 🤔
1. Em relação à injeção de dependências, você poderia optar por usar a anotação @RequiredArgsConstructor do Lombok e declarar as dependências como private final. Isso não apenas torna o código mais conciso, mas também fortalece a imutabilidade.
2. Dependendo da complexidade e do tamanho da sua aplicação, seria interessante estruturá-la em módulos do Maven. Isso facilitaria o gerenciamento de dependências e minimizaria os riscos de violações das regras de arquitetura limpa por parte dos desenvolvedores.
3. Notei um pequeno deslize em sua implementação que poderia ser melhorado: o controller EmailSenderController deveria depender da abstração EmailSenderUseCase em vez da implementação EmailSenderService. Isso está mais alinhado com o princípio da inversão de dependência, que sugere depender de abstrações e não de implementações concretas.
Video top demais! Fernanda depois poderia trazer resolvendo desagios técnicos para estágio/junior com Java?
Up
up
UP
Boa Fê , sempre o conteúdo é bastante didático e já quero os testes unitários .
Valeuu @filipe222345 💜
Esse vídeo vai vir!!
Fernanda parabéns, vc foi uma das pessoas que me ajudaram a entrar no mundo Java com seus conteúdos. Mas se eu não estiver engando, quando usamos dependência via construtor não precisamos passar o autowired, acho que essa mudança veio no spring 3. E sim teste seria muito top e vc poderia fazer uma trilha implementando os outros serviços desse repositório da Uber, sei que vc é fera tbm no javascript, pq não fazer essa série implementando várias techs
como estudante de java, é muito bom encontrar conteúdo que não seja CRUD... mesmo assim, achei difícil toda essa lógica de interfaces de regras de negócio, interfaces de serviço. Mas é isso mesmo, tudo que é novidade incomoda rsrs... parabens Fernanda, e obrigado.
Fê, seus vídeos são excelentes. Aprendendo muito aqui. Muito obrigado e parabéns!
Só um dica: o tamanho da fonte do código no IntelliJ pode ser um pouco maior, já que tem bastante espaço vazio no lado direito da tela. Pra quem assiste ao vídeo em telas menores, aumentar o zoom de exibição ajuda bastante.
Eu não entendo nada do que ela fala, mas gosto de assistir me ajuda na facul de ADS
47:22 muito bom o Video, só fiquei com uma dúvida, não seria a interface do usecase que deveria ser usada no controller?
Voce faz parecer tão facil! gosto demais dos seus videos muito obrigado!
Que bomm, @KermesSalustiano, eu que agradeço
Fico feliz que tenha ajudado você 💜
Muito massa esses videos de desafios backend com Spring , showw
Você usa o clockify, track de tempo e dinheiro, tipo você coloca seu projetos e usa o start, vai contabilizando tempo e dinheiro gasto em cada projeto, tanto para cobra algum cliente, quanto para você mesmo veja quanto tempo e dinheiro está invetino em algum projeto
Conteúdo incrível e de grande valia! Muito obrigado por compartilhar o conhecimento Fer
Bem bacana esse exemplo, foge um pouco dos tradicionais CRUD's, mas parece ser algo para Júniors mais experientes ou plenos
Duvidas:
1. No minuto 27:34 você adiciona na mão o e-mail do remetente, porque não fez usando buscando de algum arquivo de configuração ou variável de ambiente? Geralmente implementa-se assim ocultando coisas deste tipo do condigo. Qual seria a melhor solução ou boa prática neste caso?
2. Ainda sobre o minuto 27:34 como faria para buscar o e-mail de um arquivo de configuração, de uma variável de ambiente, ou secret manager da AWS; de forma que não expusesse um e-mail diretamente no código? Como faria aplicando a melhor pratica?
3. No minuto 29:05 você usou um try catch, capturando a exceção e mandando para frente. Porque ele foi implementado na classe de EmailSenderService? Existe outra abordagem que não seja lançando exceção? Como ficaria, p.ex., se eu quisesse mandar uma notificação que houve erro no envio?
Pequena sugestão: Seria interessante um video sobre Websockets com Spring ;)
realmente seria mt bom
Se materia for fisica a gente deixa a torneira ligada, mas o sol pode queimar, muitos ratos aparecem voando
Conteúdo muito bom, parabens Fernanda, com certeza irá ajudar muita gente 🙏
perfeito o vídeo, aprendi bastante
depois faz um vídeo mostrando como criar testes unitários e de integração, boas práticas na criação desses testes, etc...
ou também fazer um vídeo criando um projeto seguindo os ensinamentos do livro código limpo
Lança pra nóssss esses Teste Unitários
Que bomm, @LoperaTw
Fico feliz que tenha gostado 💜
Esse vídeo vai sair sim!!
Ótima aula Fernando, faz vídeo de testa pra gente por favor.. e se possível faz utilizando JUnit e Mockito..Muito obrigado
Oii Alexandre! Muito obrigado 💜
Soltei um vídeo há 2 dias sobre testes unitários. Assiste lá e me diz o que achou!
Espero que goste!
Olá. Não sei se fez em vídeos posteriores, mas você importou o Lombok para o projeto, e não usou. De repente seria legal mostrar para o pessoal como funcionaria a injeção de dependência por exemplo, sendo auxiliado pelo Lombok utilizando RequiredArgsConstructor a partir da definição das propriedades como final, você acabaria não precisando escrever essas injeções por construtor com o Autowired, e deixaria o código um pouco mais clean. No mais, sua didática é impressionante Fernanda, parabéns (:
Seu canal é top!!! Obrigado por compartilhar com a gente!!!
Por favor, faça um video que contenha o seguinte: API Rest + Testes Unitarios + Docker com Deploy na Nuvem (Railway ou outra plataforma).
Obrigado por compartilhar seu conhecimento!
Realmente sou seu fã Fernanda, me diz o que tenho de fazer pra chegar ao seu nível, é que és mesmo muito boa naquilo que fazes
21:20 Pra mim isso eh um dos principios do solid: dependency inversion principle
Ótimo conteúdo Fernanda. Parabéns!!!!
Obrigada Jeff!
Show! Eu nunca ia saber interpretar esse teste.
Fernanda minha pacera, tem como fazer um vídeo falando de mTLS no Spring boot ?
Não entendi como o spring vai escolher qual e-mail gateway injetar caso exista mais de um implementado. É oque tiver a notação autowire?
No momento que estou mandando esse comentário, estou no minuto 30:25, estou curtido, legal que você sabe explica as etapas e o porque esta sendo implementado de tal maneira, mas acredito que o segundo service não era necessário nesse caso, compreendo o que disse ta dahora o video.
Considerando que seus clients estão chamando a interface, as implementações precisarão respeitar essa interface, igual você anotou... Ai depois não seria apenas criar uma nova implementação pensada na outra infla, e com @Qualifier("") você apontava
?
Fico feliz que você esteja gostando, André 💜
Pois é, tem muita questão de projeto e arquitetura de solução. Às vezes um time vai preferir seguir uma estrutura diferente, e tá tudo bem, é questão de preferência.
Fê, por que não colocar a anotação @Autowired já na instanciação da dependência ao invés de criar um construtor para essa dependência?
Muito top seus vídeos, Por favor, faz a parte de testes unitários.
Kkk mano entendi nada… mas é daora de ver parece aqueles hacker de filme falando 🤣🤣
Parabéns pelo conteúdo. Adoraria ver uma colab com as feras: Fernanda Kipper e Michelle Brito 🎉🎉🎉
Muito obrigadaa, @agnosantiago5517 💜
👀👀
Qualidade do vídeo tá monstra!!
Valeuu, Eric 💜
Meus parabéns, continue dando aulas, ajuda muitooo. Tenho 19 anos e estou te acompanhando constantemente.
Uma dúvida, ali na parte do EmailSenderGateway eu tive que colocar o @Component, porque estava me dando um erro de "Could not autowire. No beans of 'EmailSenderGateway' type found"
E so dessa maneira que eu consegui resolver, porque o Spring não estava conseguindo achar o construtor, e ai que esta a minha pergunta, como que na tua aplicação funcionou kkk
Essa câmera esculachou fer, topppp
hahahh muito obrigadaa, Gustavo 💜
Tivemos uma evolução!!
Que conteúdo incrível, Fernanda! Obrigado por nos auxiliar tanto a entender esses conceitos mais complexos, sua didática é incrível!
Fiquei com uma dúvida em relação a interface de Gateway. Se fizermos o teste completo, implementando outro email provider, devemos implementar a mesma interface de gateway para essa nova implementação? Como o Java identifica qual o email provider que queremos utilizar?
Só faltou a parte de failover que está no desafio, se um provider falhar tem que fazer fallback para outro e garantir HA.
queria ver algum algoritimo de circuit break =/..
Ja tentou implementar isso você mesmo ? Por que esperar por um vídeo ?
@@fabricioaraujo7642 já sim, seria legal para aprender outros approaches, até por que não trabalho com Java. E esse ponto estava no desafio
Show de bola. Por mim pode fazer o vídeo de junit tb!
Valeuu 💜
Ja prometi esse vídeo há tempo hahah vou gravar essa semana!
Onde seria o lugar mais adequado para selecionar qual serviço de envio de email usar?
É o clássico, segue todo o passo a passo e no fim da erro, até agora estou tentando entender isso.
KKKKKKK literalmente eu nesse momento
@@edmilsonferreira5204 man o código igual ao que foi ensinado kkk mas não roda. E pior, não tem um git pra comparar kkk
Oii, @mufinagamer
Adicionei o link do repositório na descrição, caso você queira dar uma olhada pra comparar com o seu projeto
me salvou!! obrigadin!@@kipperdev
@@edmilsonferreira5204 o erro estava na parte do regions, aparentemente o spring não conseguiu ler o arquivo "application.properties". Dai precisei por na mão as credentials e a region. No meu caso deu bom.
Opa, tudo bom? seus videos sao inspiradores. Me tire uma duvida, voce faz o teste antes e depois posta um video no youtube ou faz eles de primeira
Parabéns, muitooooo bom mesmo.
Muito obrigadaa, @leandropilz7996 💜
Obrigado pelo vídeo, faz mais!
Vou fazerr 💜
Seus vídeos são ótimos MDS ❤❤❤😮😮
a velocidade que você fala e a didatica é perfeita c é muito fera pprt
Okay, Injectou o EmailSenderService conhece o EmailSenderGateway e o Ses tem que implementar, dessa forma o Spring injecta automaticamente a classe, mas e se tiver outras classes que implementam o gateway ao mesmo tempo, como é que fica?
É possível ter mais de uma implementação, mas será necessário diferencia-lás. Há várias formas de fazer isso, uma delas é adicionar a anotação Qualifier com um nome único da implementação na definição da classe e usar a mesma anotação quando fizer a injeção de dependência do atributo que faz menção a interface. Recomendo a leitura do artigo Spring Bean Names do site Baeldung.
Ótimo vídeo, Fê! No caso da abstração entre os dois serviços daria para fazer com a interface e utilizar a anotação @Qualifier?
Fê, enquanto fazia o projeto, decidi eu mesmo procurar onde encontrar a dependência, ao invés de copiar. Acontece que foi muito difícil encontrar, tantas versões, nenhuma documentação clara na AWS sobre a diferença entre as versões. Fui, então, com a versão mais recente. Só que a API mudou muuuuito! Eles passaram a utilizar um padrão diferente e achei muito mais verboso, confuso. Dito isso, queria sugerir:
1. O que acha de fazer um vídeo falando sobre onde encontrar e como navegar nesse mar de dependências que são publicados?
2. Analisar a atualização na api e mostrar como aprender a implementar quando a documentação é ruim.
Sei como é, Lucas!
Às vezes é muito chato pesquisar em algumas documentações pq é difícil entender o que estão querendo nos dizer, às vezes os exemplos são péssimos tbm.
Acho uma boa um vídeo falando disso, muito obrigado pela ideia 💜
Estou temdo dificuldade aqui com a dependencia da aws também, só confiando não funcionou, busquei a versão mais recente e também não está funcionando.
no pom está OK, não da erro nenhum, mas na hora de adicionar no condigo o intelij não acha a dependencia, e mesmo tentanto importar na mão, não esta dando certo.
Oii, @@joserodrigues5899
Tenta dar uma olhada no comentário que eu deixei pinado, parece ter ajudando o pessoal. Depois também dá uma olhada no repositório da solução que eu deixei no link do vídeo e compara com o seu projeto
@@kipperdev a noite vou dar uma olhada no repo, procurei ele mas não havia achado. Mais tarde procuro de novo e volto aqui caso consiga resolver.
Tivesse uma outra implementação além da AWS ficaria melhor o entendimento, eu acredito
A documentação poderia ser feita usando o Swagger. É bem tranquilo.
Uma dúvida, se você tivesse que fazer alguma fazer uma validação de negocio. Digamos que a ubber tem uma lista de palavras proibidas no corpo do email. Essa validação teria que ficar ali no Core correto? Pois é parte do caso de uso. Como ficaria essa implementação?
Parabéns. Ótimo conteúdo!!!
Muito obrigadaa, @otnirodruigues2212 💜
Eu implementei, funcionou, mas eu não entendi foi nada KKKKK
Vou assitir mais uma vez e pesquisar sobre o conceito Clean Arquiteture
Boaaaaa, bons conteúdos!!
Olá, alguns milhões de anos depois, hoje estava fazendo este teste e me deparei com um erro: Error: Couldn't connect to server
Durante o teste, voce abriu o Insomnia nesta parte e não consegui fazer igual.
amo seus vídeos :)
Oi gente!
Caso o meu Use Case fosse retornar algo, para um Presenter por exemplo, a classe EmailResponse que seria um DTO assim como o EmailResquet, onde ela ficaria, também no Core, ou seria um DTO da camada de Infra ou quem sabe da Application?
O meu Controller sendo da camada mais externa, por usar Framework, ele pode usar um DTO da camada mais interna Core "(por isso a minha dúvida)?
conteúdo bom, obrigado, parabéns.
Interessante a explicação!
O negócio mesmo é no code, muito mais rápido, não precisa saber tantos detalhes técnicos. No code tem uma grande vantagem por ganhar tempo, o que as empresas mais precisam atualmente
a questão não é se é rápido codar ou não, mas sim a escalabilidade disso, como você implementaria uma escalabilidade para um sistema no-code para que tenha 2 milhões de requisições por SEGUNDO em um código gerado automaticamente? como você implementaria um sistema desses para fazer requisições para aws sem derrubar tudo por excesso de requisições ? Não dá. NoCode e LowCode existe a vários e vários anos, são muitas questões para colocar em jogo além do tempo de desenvolvimento de um projeto.
Um sistema no-low code gera um código já foi mastigado por um programador que projetou e implementou a plataforma, e você fica preso a isso.
@@riseunk0 elas são bastante adaptativas hoje em dia. Da pra fazer tudo e mais um pouco, esse é o futuro, é rápido. É isso que as empresas devem se preocupar, tempo, se demorarem pra entregar algo, ficam pra trás, por isso devem desenvolver cada vez mais rápido. O Banco do Brasil tem utilizado no code na maior parte dos seus sistemas atualmente por exemplo.
@@masterthug8647 Tente fazer um algoritmo de recomendação de produto simples, estilo de um e-commerce, se tiver alguma ideia de como implantar isso eu realmente quero saber.
@@masterthug8647 "O Banco do Brasil tem utilizado no code na maior parte dos seus sistemas atualmente por exemplo". De onde você tirou isso amigo?
@@riseunk0 th-cam.com/users/livez0W6smxaF4s?si=GZlG-6cC8xqoSwoj
Presta atenção
Show de conteúdo!
Muito obrigadaaa, Matheus 💜
fe, acha que esses desafios sao um bom caminho para o aprendizado? to começando agr no spring
O meu não funciona por nada kkk
Está dando um SkdClientException : Failed to connect to service endpoint
Muié forte 🦾🦾🦾
💜
O correto não seria usar a EmailSenderUseCase no controller ao invés da implementação?
Mas no mais muito bom o vídeo.
Excelente o vídeo! Mas uma dúvida, quando criamos uma service (ou controller e afins) e anotamos ela, o spring já não entende que o construtor já ganha um autowired por padrão? Ou você colocou essa última anotação só pra deixar explícito mesmo?