10 Spring and Spring Boot Common Mistakes You Need To STOP

Поділитися
Вставка
  • Опубліковано 28 лис 2024

КОМЕНТАРІ • 216

  • @zsombortoreky7678
    @zsombortoreky7678 Рік тому +42

    You've mentioned at the testing part, that we should not use a different database from the production one (eg.: postgres / h2), I would really be interested in seeing a video about these types of best practices, thanks😁

    • @mikeoxlongdnb
      @mikeoxlongdnb Рік тому

      ua-cam.com/users/livev3eQCIWLYOw

    • @nicholasferrara8028
      @nicholasferrara8028 5 місяців тому +2

      You want to look in to using Test Containers to achieve this

  • @rhumedisi2783
    @rhumedisi2783 Рік тому +16

    Thank you very much for this detailed Spring/Spring Boot, "How Not Tos". It's great to see a teacher who consistently and effectively communicate best practices.

    • @marcoreinaldi4193
      @marcoreinaldi4193 Рік тому

      I agree. I think this video is great and give me insight how to avoid mistake on Springboot. But I hope, he will publish another video with the solution on how to do it right. Not the whole thing, but maybe just an Idea how to do it right.

  • @codingsavid6509
    @codingsavid6509 Рік тому +56

    Can you make a video on propertly error handling?

    • @V4dk4n
      @V4dk4n Рік тому

      Read about @ControllerAdvice annotation.

    • @olukayodepaul7070
      @olukayodepaul7070 14 днів тому +1

      yes you can check how error is manage with the code base i shared. u can have a custom error manager.

  • @aminesafi7261
    @aminesafi7261 Рік тому +61

    For the @Autowired annotation, you should use it if you have more than one constructor otherwise Spring will fail to inject the dependencies, it is a kind of a hint to tell spring which constructor to use.
    Nice video and very good explanation, keep going 💪🏻

    • @igle85
      @igle85 Рік тому +11

      You shouldn't have 2 constructor for services, it's not a good practice.

    • @aminesafi7261
      @aminesafi7261 Рік тому +13

      @@igle85 I agree, I’m just explaining that we can find ourselves in this situation.

    • @Denys.Stoianov
      @Denys.Stoianov Рік тому

      @@aminesafi7261 it is possible to pass multiple services to the constructor and it will works even without @Autowired annotation,

    • @aminesafi7261
      @aminesafi7261 Рік тому

      @@Denys.Stoianov You didn't get it, read my comment again :)

    • @aminesafi7261
      @aminesafi7261 Рік тому

      @@sweets7092 Your comment is off topic, thanks anyway 🙂

  • @andreinovosiolov
    @andreinovosiolov Рік тому +4

    Thank you for this video. I'm a trainee and you videos are very helpful. Waiting for lesson about proper testing of a Spring Boot application.

  • @ПавелСмирнов-й7х
    @ПавелСмирнов-й7х 9 місяців тому

    wow it's 2024 and you're still the best spring youtuber in the whole world

    • @andiuptown1711
      @andiuptown1711 4 місяці тому

      *Nah Bouali Ali/Dan Vega/Java Guides/DevTiro are better*

  • @Maicrash104
    @Maicrash104 Рік тому +5

    To Error handling, since Spring 6 you can use "Problem Details" like standard and not have your own ErrorDto

  • @marcelohmg
    @marcelohmg Рік тому +7

    I would really like a video about testing the databese and querys!

  • @rockdarko440
    @rockdarko440 Рік тому +17

    Thanks for this! I would really indeed like a video for the case against using H2 for testing. We use Oracle in production (migrating to postgres enterprise in a year or so) and would like to hear what you would suggest here. Thanks again!! :)

    • @MarcoS-mx1vj
      @MarcoS-mx1vj Рік тому +3

      The problem with using In-Memory databases for testing is, that it doesn't make your tests reliable. Its a completeley different database with a different feature set. A green h2-based test doesn't mean that your code will work in production as well. One solution for this would be using a dockerized version of your production database (e.g. by using TestContainers).

    • @rockdarko440
      @rockdarko440 Рік тому +2

      @@MarcoS-mx1vj Yes, you are ultimately right and Oracle supplies such containers. But the reality often is that developers don't always have the resources on their laptops to run something as hungry as oracle (even containerized that is a beast) and most of all often lack the knowledge/will to set it up. As an ops I would need to create a deployment for them I guess. It's a real shame to be honest, but that is the reality I deal with personally. The model we use for the time being is devs use H2 locally on their laptop, then deploy in a DEV environment where a full blown Oracle server is and although I wish it weren't that way, it does the job. Thanks for replying!

  • @TheSpiderWalk
    @TheSpiderWalk Рік тому +5

    It would be nice to record one video only about testing in spring-boot, I am currently struggling with testing in spring-boot.

  • @narek-tm
    @narek-tm Рік тому +3

    Thanks for your content. Please, make video tutorials on testing in Spring Boot, especially integration testing, test containers.

  • @Denys.Stoianov
    @Denys.Stoianov Рік тому +2

    I see that you have here at 12:00 FakeS3 class, so it means you modify your production code to be able to test it. Why you do not use in this case localstack, it is also a standard defacto like testcontainers for testing. Correct me if I am wrong and this is just for Demo purpose

  • @sz_peter
    @sz_peter Рік тому +4

    Setter injection is allowed when more then 7 dependencies required in the given class to avoid the "Method should not have more then X parameters" Sonar issue (if you use any static code analysis tools).

    • @hamsandwich123
      @hamsandwich123 Рік тому +2

      tbf if you have 7 dependencies for a class you may want to rethink your design. good chance the class is doing too much and can be broken up into smaller classes.

  • @Jebusankel
    @Jebusankel Місяць тому

    Instead of defining your own ApiError, I think you should strongly consider using the standard and built in ProblemDetail class. It has an RFC.

  • @tedac091
    @tedac091 Рік тому +1

    I've been looking up on how to make the switch from H2 database to tests containers. I would really appreciated a video on it, thank you!

  • @shortcutcoder6228
    @shortcutcoder6228 16 днів тому

    At 5:19 you mentioned that there is no need to use @Autowired when doing dependency injection. It actually works when there is only a single constructor. When there are multiple constructor, then you need to explicitly show dependency injection by using @Autowired annotation

  • @richaveli
    @richaveli Рік тому +3

    Can't wait to see what mistakes I'm already making! 😊

  • @glitchinLife
    @glitchinLife Рік тому

    A small glance of how beautiful code can be, thanks for sharing

  • @dshakya29
    @dshakya29 Рік тому +2

    Hi Nelson, please make a series on testing Spring Boot applications.

  • @geni4551
    @geni4551 Рік тому +2

    Thank you very much for the explanation. Would love to see why we should not use H2 for testing video! :)

  • @feloniousmonkey
    @feloniousmonkey Рік тому +1

    @Valid was correct...@Validated is for partial or group based validation...

  • @mark6662
    @mark6662 Рік тому

    I understand for most instances constructor injection is better than setter injection but what do you mean by you can't mock the dependencies with setter injection. Surely you can just Create the object and then create a mock of the dependency and pass that dependency in through the setter.

  • @heduardos26
    @heduardos26 Рік тому +2

    Great video, thanks a lot! We'll love to see a video where you explain how to test with the same DB and not use H2.

  • @MrTutiplengo
    @MrTutiplengo Рік тому +1

    Awesome content. I'm new to Spring Boot and this was very informative. I didn't know about Java records at all.

  • @bashirzamani5144
    @bashirzamani5144 Рік тому

    Thank you nelson, please continue this form of videos

  • @abdullaermatov1848
    @abdullaermatov1848 Рік тому +1

    Would you suggest to use Lombok annotations for getter and setters? Or it is better to do it without lombok?

  • @majesty8309
    @majesty8309 8 місяців тому

    I have learnt something new. Thank you very much Nelson

  • @DeGoya
    @DeGoya Рік тому +5

    Salamu alaykum brother, could you do a video on @Async and CompletableFuture?

  • @riccardoatwork5291
    @riccardoatwork5291 11 місяців тому

    The main reason to use dependency injection is NOT "to have Spring do things for you" or "so that you can use singletons".
    It is used to do dependency INVERSION.
    Also, leaving the @Autowired on constructors is not a mistake, it servers a role as documentation.

  • @danielbaptista4925
    @danielbaptista4925 Рік тому +8

    Hi Nelson! :) Great video, I would love to see a video about database testing with an practical example

    • @482ksd
      @482ksd Рік тому

      Second this. Would love to see how you spin up a container with a real DB in it for testing.

    • @Jumataev
      @Jumataev Рік тому

      Me also

  • @rajkhare5949
    @rajkhare5949 Рік тому +3

    nice video thanks!!!...why your courses are not available at Udemy??...please start your channel there as well!!

  • @lubodimitrov8778
    @lubodimitrov8778 Рік тому

    could you explain why we shoulnt use xml? do u recommend using gradle?

  • @marian2221
    @marian2221 Місяць тому

    Nice video. I am not sure however what you aimed to do in "Error Handling" example, but in a form you have shown the code I do not see what is the point to add RuntimeException as Exception is superclass and will catch it.

  • @egamberdijabborov6586
    @egamberdijabborov6586 Рік тому +1

    👍👍👍👍Thanks for the video tutorial

  • @kirasign4605
    @kirasign4605 Рік тому

    Please make other testing video like what you said in this video. Very grateful for this
    Thanks in advance! Lovely videos like always

  • @niaboktruk
    @niaboktruk 8 місяців тому

    Amazing content man, I'll watch every video you have. Amazing, simply amazing!!! 🤩

  • @luca_raveri
    @luca_raveri Рік тому

    what about field injection with the annotation @Autowired? is this a good practice or should be avoided? if yes, why?

  • @monsuruokuniyi1234
    @monsuruokuniyi1234 Рік тому +1

    Tests, I'm not doing that enough. We write lots of code at work, and I believe we should also be writing tests along side. But our output rate doesn’t allow it. Can we start writing tests now? It looks like a daunting task

  • @shanagondaarun2436
    @shanagondaarun2436 Рік тому +1

    What's the theme called. How to apply it. Looks dope

  • @carlosrenesoto9650
    @carlosrenesoto9650 Рік тому

    Great video @amigoscode Thanks a lot for sharing your knowledge!

  • @usamaabubakar3061
    @usamaabubakar3061 Рік тому

    Can you give more insights about that logger part? What to log, what not to log, best way to use log, and when to use info, debug, warn and error

  • @diniomar3965
    @diniomar3965 Рік тому

    Your video is very clear. Whats your setup?

  • @rezaru2000
    @rezaru2000 5 місяців тому

    Excellent! to the point!

  • @nikolayverkhovtsev3886
    @nikolayverkhovtsev3886 Рік тому +1

    Is this IDEA or what IDE u use in this video?

  • @rostomnouisser4023
    @rostomnouisser4023 Рік тому +1

    please make tutorials about XLD , Jenkins and déploiement of an application , it's important and you can make it simple

  • @jorgetovar621
    @jorgetovar621 Рік тому

    Whats the theme that you are using? it looks nice

  • @andrewcbuensalida
    @andrewcbuensalida Місяць тому

    Mistake number 3, not silencing your phone while recording a tutorial. just kidding, i love your videos👍

  • @sphesihlemanuel2933
    @sphesihlemanuel2933 Рік тому +1

    Happy to learn, I thought Field injection was the that makes it hard to unit test, and Setter and Constructor injection were fine 👏🏾

    • @adambickford8720
      @adambickford8720 Рік тому

      Not setter injection. An object should be in a useable state once its created. Beans are shared by default so you don't want other playing games with it.

    • @robertwhite3503
      @robertwhite3503 Рік тому

      Constructor injection offers the guarantee that the object has the required dependencies. Setter injection means that anyone using the object has to remember to inject.

  • @ClaudesGomes
    @ClaudesGomes Рік тому

    what extensions do you use in the intellij?

  • @pguti778
    @pguti778 Рік тому

    Very good video! Yes please go ahead and do a video on testing!! Another mistake: not using lombok!!!

  • @alvaroandressuarez
    @alvaroandressuarez Рік тому

    what is the particular IDE you are using in this video?

  • @geektamil
    @geektamil Місяць тому

    whats that intellij plugin creating calls? like postman

  • @jochanoss
    @jochanoss Рік тому

    Essalamu Aleytkum Nelson, I love the way that your IDE looks. Would you make a video of what plugins do you use?

  • @mujaddidsislam1897
    @mujaddidsislam1897 Рік тому

    this video gives me enlightenment, جَزَاكَ ٱللَّٰهُ

  • @abhipatel439
    @abhipatel439 Рік тому +1

    Hey, brother! If it's alright with you, could you possibly make a dedicated video that covers the topic of testing in Spring Boot? It has the potential to greatly benefit your audience.

  • @elvisismaelsalvatierraespi8990

    Que IDE estás utilizando?

  • @LukmanJaji
    @LukmanJaji Рік тому

    Salam alykun Nelson. Please make a video on why we should not use H2 for testing. Thank you.

  • @LearncodewithMuneeb
    @LearncodewithMuneeb Рік тому

    Thanks sir for making useful videos for us.
    But I request you very respectfully to work in a project in spring boot having at least 6 entities/tables using spring boot in the back end and React/Angular/Next in the front end

  • @danielthompson3082
    @danielthompson3082 Рік тому

    what's the difference between @SpringBootTest and @DataJPATest and why should I only use the former once?

  • @eduardo-1822
    @eduardo-1822 Рік тому

    So cool, very nice tips, thank you buddy

  • @zafarboymurotov764
    @zafarboymurotov764 Рік тому

    Thank you very much good luck

  • @KamelBerkani08
    @KamelBerkani08 11 місяців тому

    How do you run controllers with IntelliJ ?

  • @taners
    @taners Рік тому

    hi Nelson, good tricks thank you. which plugins do you use on IntelliJ ?

  • @darpanshirsat1712
    @darpanshirsat1712 9 місяців тому

    Thanks you Buddy!

  • @Michaeljamieson10
    @Michaeljamieson10 Рік тому

    Highly recommend his full stack course

  • @jorgensenabrahamson6479
    @jorgensenabrahamson6479 Рік тому

    Hi, If I am using java 1.8 where the records are not present, which would be the best approach? create a mapper also? or should we use JPA Projections always instead? Could you please make a video about it? thanks

  • @adarshverma3372
    @adarshverma3372 Рік тому

    Please make a video on testing Spring Boot Application using Data Sources

  • @gabrieldragone
    @gabrieldragone Рік тому

    One of the best videos on the channel! Congratulations again, you are an inspiration!

  • @jasper-3338
    @jasper-3338 Рік тому

    2. Using records, could have some extra explanation as what it does underwater, basically I use a record with the same variabele name and it looks up a record with that variable name? and returns me a single entity with that name? or multiple within that record?
    3. Dependancy @Autowired vs constructor injection, the constructor injection is very good for testing the classes as it can be mocked using mockito. @Autowired is deprecated by spring boot.
    Good that you give one line for testing, as for testing the dependent classes can be mocked.
    For the testing is there a sample I can look into ? So I can speed up my own code as well? :)

  • @aayush481
    @aayush481 Рік тому

    Hi @Amigoscode, your'e an amazing teacher and mentor, we want to buy your full stack course and learn from you, however the price is too high for people in India, as we have to pay in USD...

  • @mdameenhasan6676
    @mdameenhasan6676 Рік тому +1

    Assalam mu alaikum brother, Can you please make video on Muslim Software Engineer Routine in Ramadan… eagerly wait for it😊. And yes love from India🫶🏻

  • @alpiirzptr8052
    @alpiirzptr8052 Рік тому +1

    which you prefer to use for build, maven or gradle?, currently i using gradle
    cause gradle dependency download faster than maven, sometime maven take a long time to just update dependency even my internet speed is fast enough to download 1 gb for 5 mnt, now i using vs code to write spring and cmd to run spring, does that also affect maven performance compared to using ide?

    • @IvanRandomDude
      @IvanRandomDude Рік тому

      gradle in 2023

    • @LOLdjrabaanLOL
      @LOLdjrabaanLOL Рік тому +1

      only maven

    • @robertwhite3503
      @robertwhite3503 Рік тому

      I prefer Maven rather than install another language (Groovy). In general the download is the same file files for Maven or Groovy. I am not sure if Gradle uses the Maven Repositories anyway. But with either tool, you download once and the data is stored on the PC for future use. Some IDE's use their own build tools. Others use Maven, or at least allow you to run Maven, just like you are doing.

  • @bladerunner20446
    @bladerunner20446 Рік тому +2

    Great content as always. Could you please make more in-depth testing videos

  • @henrikkrievs4274
    @henrikkrievs4274 Рік тому

    Love your vids. Are you familar with a tool, which is capable of listening to several ports on localhost, at the same time? Like a sniffer

  • @Jumataev
    @Jumataev Рік тому +2

    Hello Nelson! I really would like to see how you test with real database, because recently I saw your video with a h2 in junit testing.

    • @robertwhite3503
      @robertwhite3503 Рік тому

      It is interesting that so may demos use H2 for testing.

  • @mriduljayan4466
    @mriduljayan4466 Рік тому

    Though xml is verbose it does separation of concerns better. The framework is less invasive as all you have is pojos.

  • @ms-pf9ow
    @ms-pf9ow Рік тому

    I learned a lot. Thank you

  • @diabawii
    @diabawii Рік тому

    Is the code you are explaining in the video is public, and where can i find it if it is ?

  • @Asingh42
    @Asingh42 Рік тому

    14:20 what is diffrence between jakarta validation and spring ones?

  • @limobei5042
    @limobei5042 Рік тому

    Thanks a lot. I learned a lot.
    Please let me know, how i can learn better testing within spring boot, e.g. use right and necessary parts of apllication context

  • @talbiabdelali5914
    @talbiabdelali5914 Рік тому

    Could you release a full course of Spring boot testing please ?

  • @seyedaliroshan2386
    @seyedaliroshan2386 Рік тому

    Salam, can make a video of what is the difference between using lombok @Data annotation and the record classes and which is better? I couldn't find a good compression and really carious about it

  • @lmrl021
    @lmrl021 Рік тому

    Great video. Can I request for another video for possible solution in one of those mistakes? Thank you.

  • @feloniousmonkey
    @feloniousmonkey Рік тому +1

    Your points are valid, but I don't think record really matters in terms of exposing internal data..you are on the right path, mapping your entity to dto like that is pretty crude..of course in the real world tools like mapstruct or dozer are used to seamlessly map to DTOs.

  • @rollinOnCode
    @rollinOnCode Рік тому +1

    5:30 wait what should i be using instead of @autowired ?

    • @Jazzon234
      @Jazzon234 Рік тому

      Nothing :) just leave it without the @Autowired annotation. If there is only one constructor, spring will automatically detect this constructor and injects your dependencies.

  • @GFunkEra1992
    @GFunkEra1992 Рік тому

    Thank you brother, very usefull info

  • @feloniousmonkey
    @feloniousmonkey Рік тому

    Great content...your points are ones that I do see fairly often. Keep the vids coming 😀

  • @sakthisomaskandan6438
    @sakthisomaskandan6438 Рік тому

    Great video as always! Can you please make a video on why not to use h2 for testing? Thanks 🙏

  • @AdnanAmmanUllah
    @AdnanAmmanUllah Рік тому

    could you please create a detailed video on error handling?

  • @larcenmenlahcen5998
    @larcenmenlahcen5998 Рік тому

    Salam alikom akhy(Brother) good job, keep do it. Ramadan moubarak👉

  • @khaganimammadli6846
    @khaganimammadli6846 6 місяців тому

    Hi, you are my fav youtuber, you explain clearly and i understand almost everything. I wait from you the best tutorial about functional programming, lamda, streams and etc from zero to hero with simple explanation

  • @MizanurRahman-fi2qu
    @MizanurRahman-fi2qu 3 місяці тому

    Thank you

  • @sacmaliyoruz
    @sacmaliyoruz Рік тому

    salam alaikum brother thanks for everything. you are the best. hi from türkiye

  • @sphesihlemanuel2933
    @sphesihlemanuel2933 Рік тому

    Please record a video on testing 👏🏾🙏🏾

  • @sweetphilly2
    @sweetphilly2 Рік тому

    Yeah i gotta take some time to learn more about Records. They seem simple yet powerful. Anyone seeing the benefits of them, and mind further explaining their uses?

  • @wizz1e80
    @wizz1e80 Місяць тому

    So no class validator and class transformers for spring boot??

  • @bartoszrocha5028
    @bartoszrocha5028 Рік тому

    You did wrong with validation, its the @Valid annotation, like you thought, but you will need additional dependency to validition in new version of spring boot.

  • @skynight5207
    @skynight5207 Рік тому

    Could you please make video about domain driven design (ddd) design pattern with spring boot?

  • @nayeemrafsan356
    @nayeemrafsan356 Рік тому

    this is goldmine!

  • @BioDetermination
    @BioDetermination Рік тому

    @Amigoscode Another mistake what I have seen is not using springdoc to generate OpenAPI documentation. This is a lifesaver to deliver to QA instead of using Microsoft Word.

    • @amigoscode
      @amigoscode  Рік тому +2

      Maybe I’ll do a video on it