DEV Community

Cover image for Let’s Develop an E-Commerce Application from Scratch Using Java and Spring

Let’s Develop an E-Commerce Application from Scratch Using Java and Spring

Nil Madhab on October 29, 2021

Project setup, develop category and product APIs Motivation In my opinion, the best way to learn programming is to create a r...
Collapse
 
190245 profile image
Dave

Excellent article, with good diagrams.

A question though: What are your thoughts on Lombok (for removing the getters/setters and some boilerplate)?

Also, obviously for a Production system, you might want to tweak things a little (eg, ControllerAdvice for the edge cases when the DB is offline etc, maybe add CircuitBreaker, etc)... but I do understand that the aim of the code was a tutorial, not a Production Ready application.

Collapse
 
nilmadhabmondal profile image
Nil Madhab

Lombok can be used. But for big projects it cause some issues. For demo projects it should be fine.

Yeah, it is a complete app. We can do many things to make it better. You are welcome to send a pull request.

Collapse
 
190245 profile image
Dave

We actively use Lombok, across ~50 projects that are all in Production environments.

I'm curious, what problems have you seen with it on "big projects" ?

Thread Thread
 
nilmadhabmondal profile image
Nil Madhab
Thread Thread
 
190245 profile image
Dave

Thanks, though I asked for your thoughts on it, not someone else's musing on the topic.

To address those points on that external site:

  • "It's another dependency" - yes, it is, yes, I have to modify the IDE too. But does it follow that I shouldn't deploy into Kubernetes because I have to install kubectl?
  • "Enourmous coupling, use interfaces instead" - this is more about where Lombok is used, and is a choice of how the workman uses the tool. I wouldn't use a sledgehammer to replace a window in my house.
  • "Removal of getters and setters hides code" - sure it does. But that doesn't mask anything, and by extension of the "hiding code is bad" argument, surely, no-one should use Spring either!
  • "Builder hides problems that would be a compile failure" - see javax validation. Your problems just went away.
  • "Lombok doesn't work with Spring variable injection" - cool, I've never seen a valid use case of having getters/setters in Spring config classes, why would anyone want equals() and hashCode()? Surely the answer is simply "don't use the tool where it's of no benefit!"

So, I ask again, what problems have you (or others) seen with Lombok in big projects?

Please note, I have no vested interest in, or affiliation with, Lombok.

Thread Thread
 
nilmadhabmondal profile image
Nil Madhab

To answer your question, no personally I have never faced the issue. My team leads are against it, so we didn't implement it with lombok.

Collapse
 
nilmadhabmondal profile image
Nil Madhab

We will build the frontend using vue. Stay tuned. You can check it out javascript.plainenglish.io/lets-de...

 
190245 profile image
Dave

I won't lie, I came to the post because I'm experienced enough in Spring etc, but was curious about the use of Vue. I was a little disappointed but to see any, but it was a long post.

I also dislike external links.

Still a decent article though.

Thread Thread
 
nilmadhabmondal profile image
Nil Madhab

It will come in next articles. I have to copy it in dev.to.

Collapse
 
atabak profile image
atabak

I don't use java, but your post is great

Collapse
 
nilmadhabmondal profile image
Nil Madhab

thanks

Collapse
 
nilmadhabmondal profile image
Nil Madhab

glad you liked it. Please checkout my youtube channel for more contents. youtube.com/channel/UCi79v08O09FKX...

 
nerdishshah profile image
Shahul Hameed M Y

You're right, that's the exact reason i came here to take a peek of vue