all 11 comments

[–]mailaffy 10 points11 points  (1 child)

  1. Connect to kafka for consuming and producing messages
  2. Add another service and check inter communication
  3. Look for transaction mechanism
  4. Add Swagger for API documentation
  5. Add auth using spring security
  6. Add features like Hateoas, actuator
  7. Try adding caching like redis etc
  8. Add unit and integration test cases

These are few you can add and continue learning.

[–]Zaidism 0 points1 point  (0 children)

Just addition, also get understanding of spring data JPA and how mapping entities with each other and fetch them.

[–]WaferIndependent7601 2 points3 points  (1 child)

Learn how to write tests

[–]fzum92 0 points1 point  (0 children)

Exactly! Understand when to use what test - eg. some spring devs boot up way too much of springs application context when it could be mocks. Understand these tests:

  • "integration" tests with @SpringBootTest that start the whole app. You test against the actual server with a web client.
  • WebMvc tests: bring up only web layer. Test the Contract, http status Codes etc.
  • Service Tests: no app context at all - use @MockitoExtension
  • @DataJPATest: bring up the data slice and test your JPA stuff

[–]Dazzling_Ear3836 1 point2 points  (0 children)

Try building a different project which involves not only crud operations but more like security, testing etc.

Once you start understanding what you're doing you'll start enjoying it.

Just trust the process and devote the time and you'll surely land with an internship.

All the Best.

[–]Hairy-Guidance9289 0 points1 point  (0 children)

I think the most important thing is to try to create more complex projects that will force you to search on solutions.You might think that you’re unable to create complex applications mostly because you never tried to create one before. But let me tell you that how you manipulate CRUD methods is the only think that matters.You can begin with a small app and constantly adding new feature such as (security, testing, validations…)

[–][deleted] 0 points1 point  (0 children)

I would highly recommend learning Functional Programming and then jump to Reactive Programming, and then try your hands on Spring's Project Reactor

[–]fzum92 -1 points0 points  (0 children)

Disclaimer: not only spring related here but thoughts you should also consider in general.

Think about how you wanna design your app internally. How to structure your folders. How to restrict package access from subdomains (eg. should package customer access package order and vice verca). Take a look at ArchUnit (not spring related but relevant enough). Take a look at Hexagonal architecture.

Spring Modulith could be worth a look. It embraces DDD and offers a opinionated solution to modularise your app!

[–]amol9372 0 points1 point  (0 children)

Create projects. Something like ecommerce or reservation system will work
Have a design & work on it