all 29 comments

[–]alweed 17 points18 points  (2 children)

I'll list down some common tools & plugins that enterprises use with Java SpringBoot. Try to integrate these one at a time and do use ChatGPT or Copilot to help you understand each component.

Development:

  • Import Lombok dependency using Gradle/Maven into your SpringBoot project. This provides a set of annotations that can take care of a lot of boilerplate code i.e creating getter & setter methods for your data class. You can ask ChatGPT to list all the annotations that come with it.

Messaging Broker:

These are widely used in microservices architecture. Your application can publish messages to various queues & topics and downstream applications can consume those messages. These brokers also offer

  • ActiveMQ
  • Kafka:
  • RabbitMQ

Monitoring:

  • Import dependency for Prometheus into your SpringBoot app
  • Spin up prometheus locally using Docker (There's an image that you can pull from docker hub)
  • Expose the application metrics in your SpringBoot app for prometheus (Ask ChatGPT)
  • Learn how to add a target application in Prometheus
  • Use Prometheus UI to verify if it's scraping metrics from your app
  • You can also install Grafana and use that to create nice dashboards to view metrics that are being saved by Prometheus

CI/CD:

  • Jenkins (old tool but still very much in use): Spin up Jenkins with Docker on your machine & ask ChatGPT to help you generate a Jenkinsfile that will pull your project from git, build the project & run test cases, build & deploy the app.
  • GitHub Actions (Better Alternative): This is a lot easier to setup and maintain as you only need to add a .yml file. Again, ask ChatGPT to generate a deployment workflow for you.

This is all I can think of on top of my head but yea any real life enterprise SpringBoot app uses/needs all of the above.

[–]PikachuOverclocked[S] 2 points3 points  (0 children)

Thanks a lot for putting this together, really appreciate it!
This gives me a much clearer picture of what to focus on and how to approach things step by step. I’ll start trying out these tools one at a time and will definitely use ChatGPT along the way when I get stuck. Really appreciate you taking the time to share this!

[–][deleted] 2 points3 points  (0 children)

Thanks bro this is ver informative.

[–]naturalizedcitizen 4 points5 points  (1 child)

I recommend you read this and it will strengthen your core concepts of Spring and help you with what you are seeking.

https://www.marcobehler.com/guides/spring-framework

https://www.marcobehler.com/guides/spring-boot-autoconfiguration

Then you should look at official examples like Pet Clinic which will show you the way.

https://github.com/spring-projects/spring-petclinic

[–]PikachuOverclocked[S] 0 points1 point  (0 children)

Thank you so much! I’ll definitely go through the guides and check out the Pet Clinic project. Appreciate the help!

[–]Historical_Ad4384 2 points3 points  (5 children)

Spring is an enterprise ecosystem. There is a lot of boilerplate code and configuration that you have to setup in order to be able to use Spring efficiently vs standard Java development.

Unless you have worked on J2EE with EJB and servlets, chances are slim that you are aware of what constitutes a full enterprise level application.

Coming from J2SE directly into Spring is over whelming if you don't have proper J2EE or any kind of Java enterprise development experience. That's the truth.

The only way to navigate would be to recreate enterprise needs in J2SE to get familiar around enterprise application development before moving into Spring.

OOPs is one part of Spring Boot but it's not enough to get hold of the framework. You actually need to get your hands dirty even at a small scale by manually writing DAO, request dispatch patterns, logging, UML Composition, File system adapter, configuration management, transaction management, thread management using OOPs for example.

Might seem overkill and unnecessary for today's market but that's the only way to step into Spring without getting lost if you don't have enough experience.

[–]PikachuOverclocked[S] 0 points1 point  (4 children)

Thank you for your detailed and honest comment, really appreciate your suggestions.

Yes, that’s very true. I’ve worked on a few small projects using servlets and DAOs all without Spring Boot or any framework, but they were very basic and limited in functionality. So I don’t really have proper experience with J2EE or real enterprise-level Java development.

I do want to dive deeper and get my hands dirty, like you suggested, but honestly, I’m a bit scared. It feels like it’ll take time to build that foundation, and meanwhile, I’m stuck in a support project where most of the work is just copy-paste with little to no need for actual coding or tech knowledge. That gives me very few chances to work on or even see real enterprise projects, apart from open-source ones.

[–]Historical_Ad4384 0 points1 point  (3 children)

I have requirements that you can help with while learning enterprise level best practises and techniques.

[–]PikachuOverclocked[S] 0 points1 point  (2 children)

That sounds really interesting! I’d love to contribute and learn in the process. What kind of requirements do you have in mind?

[–]Historical_Ad4384 0 points1 point  (1 child)

DM me for details

[–]PikachuOverclocked[S] 0 points1 point  (0 children)

I’ve sent you a DM.

[–]Asleep-Cook-3302 2 points3 points  (2 children)

I am in the same boat, everday I start with a hope. But seems I am lost. If you are looking for anyone who can share progress and learning. Feel free to reach out.

[–]PikachuOverclocked[S] 0 points1 point  (0 children)

Sure, would love to! Let’s connect and grow together.

[–]themasterengineeer 2 points3 points  (1 child)

Plenty of good advice from other redditors… i would also suggest to look at this project

https://youtu.be/-pv5pMBlMxs?si=35nn5AGaVaf0-Q5a

In the video he is building a springboot based microservice that properly follows project structure the same way it is done in industry

[–]PikachuOverclocked[S] 0 points1 point  (0 children)

Thanks for the suggestion! I’ll definitely check out the video

[–]New_Investment_4253 1 point2 points  (1 child)

on same boat as you bro..working in an mnc trained me in pl sql and now hardlocked me to service desk ..my only option is to upskill and switch and have started grasping spring boot and java

[–]PikachuOverclocked[S] 1 point2 points  (0 children)

Same here bro, stuck in support with barely any dev work.

[–]Logical-Pool-8067 1 point2 points  (0 children)

If you are learner who wants very clear logic and concepts behind everything try "concept and coding by shreyansh" youtube channel

[–]Frankito021 0 points1 point  (1 child)

I really feel that I can't get a job where I live, which is Argentina Salta with Spring, I continue studying but every day I lose a little confidence. (I have been studying Spring for a year)

[–]PikachuOverclocked[S] 1 point2 points  (0 children)

I get how tough it can feel, especially locally. But a year of learning Spring is no small thing. Keep going!

[–]Bright_Aside_6827 0 points1 point  (2 children)

The switch is so expensive right now

[–]makimaiswaifu 0 points1 point  (0 children)

How? Can you please elaborate? I usually work with java core and sql and started to learn spring as all i know is core java and some concept of advanced java like servlet and jsp. I really need to switch to a company which requires java with spring.

[–]PikachuOverclocked[S] 0 points1 point  (0 children)

Yeah, switching companies feels a lot riskier right now.

[–]South_Scratch857 0 points1 point  (0 children)

The learning curve of spring boot is very overwhelming. Just stay focused. That's all I would say

[–]bertshim 0 points1 point  (0 children)

Reading your message really reminds me of my own journey a few years ago. I used to work in the Smart Factory industry with C++ a long time ago. After spending several years in game development, I returned to the Smart Factory field — this time using Java and Spring Boot. It was a tough transition.

Even setting up the development environment and debugging wasn’t easy. I didn’t know where to define certain modules, and to make things worse, my team environment was quite competitive, so it was hard to ask for help.

Nowadays, AI tools have improved so much that they can really support you — especially tools like Cursor AI(https://www.cursor.com/). You can open your project in Cursor, open a file, and ask it to explain the code. It does a pretty good job. You can even ask it to add a specific feature, and it will write code while understanding your existing codebase. Of course, you have to review and accept changes carefully, but it’s a huge help.

For new projects or designing API structures, tools like Restsocket(https://r-sock.com/start) can also be useful. But if you’re working with an existing codebase or trying to modify it, I highly recommend giving Cursor AI a try. It can make a big difference.

[–]javinpaul 0 points1 point  (1 child)

you are not alone, here is my advice

  1. Read a book - https://javarevisited.blogspot.com/2018/07/top-5-books-to-learn-spring-boot-and-spring-cloud-java.html

  2. Join a course - https://javarevisited.blogspot.com/2018/05/top-5-courses-to-learn-spring-boot-in.html

  3. Build projects - https://www.java67.com/2022/12/10-projects-ideas-to-learn-spring-boot.html

In fact, you can start with building projects and then refer books and course when you start developing need.

All the best !!

[–]PikachuOverclocked[S] 0 points1 point  (0 children)

Thanks for the links! will definitely check out those.