Improve JPA application performance using HypersistenceOptimizer

In Java world, Hibernate/JPA is the most popular ORM framework. Also, JPA/Hibernate is a very controversial topic because some people don’t like it at all. It is very understandable though. Many people start using JPA/Hibernate with minimal knowledge and keep adding logic (read as “annotations”) as and when required to get the job done. While checking the overall application performance, most of the time people realize it’s because of poor performance of persistence layer.

Continue reading »

Philip's Testing Spring Boot Applications Masterclass Course Review

If you ever worked on a large project which doesn’t have any tests then you know how painful it is to work on such codebase. You know what is more painful? Working on a project which has plenty of USELESS tests written for the sake of passing minimum code coverage requirement. Being a Professional Software Developer means more than solving a problem. One needs to learn how to write maintainable and testable code, write meaningful tests, know what to test and what not to test, how to evolve the codebase backing with a good set of test suite.

Continue reading »

LocalStack SpringBoot Starter Tutorial

I was working on a SpringBoot application which is planned to deploy on AWS and, we were using S3, SQS and RDS services. LocalStack provides an easy-to-use test/mocking framework for developing AWS based Cloud applications. I want to use Localstack mock services instead of using real AWS services for two purposes: To run integration tests To run application locally We can use Testcontainers to spin up a Localstack docker container, but we need to configure Amazon service clients like AmazonS3, AmazonSQSAsync which is typical boilerplate that we copy-paste from project to project.

Continue reading »

All the resources you ever need as a Java & Spring application developer

Nowadays software development is a challenging task as the number of programming languages, frameworks, libraries are increasing rapidly day by day. Luckily, the number of resources to learn on the internet for free also increased a lot. There are a ton of free resources to learn almost everything on the internet. There are lots of official documentation, blog posts, Udemy courses, YouTube videos etc. As a backend developer who primarily work on JVM based languages/frameworks like Java, Kotlin, SpringBoot etc, following are a collection of resources I usually follow to learn new things.

Continue reading »

Remote debugging SpringBoot application

We all know how to run SpringBoot application in debug mode from our favorite IDEs(Eclipse/IntellijIDEA etc) and debug the code. Recently I had to debug a SpringBoot application which is running on a remote server. There is already lot of information on the Internet on how to remote debug java applications, but some approaches didn’t work for me. So, here I would like to share my findings. If application is running on localhost Suppose you are running your application on localhost only and remote debug from your IDE.

Continue reading »

What I Learned in Week-14, 2020

It’s been tough time for everyone due to the Corona virus situation. Staying at home for weeks and weeks is not easy, but it is very necessary thing to do so that we don’t spread the virus. However, if I look on the bright side I used to spend minimum 3 hours for office commute everyday. Now I am using that time for various other activities including learning some new things.

Continue reading »

Imposing Code Structure Guidelines using ArchUnit

While building the software we all agree, as a team, to follow a set of guidelines which are typically considered as best practices. But during the development, developers might violate those guidelines unknowingly or ignorance. Typically we rely upon code reviews or code quality checking tools like SonarQube, PMD etc to check for such violations. But some of the guidelines could be opinionated decisions which might not be able to automate using SonarQube, PMD etc.

Continue reading »

What I Learned in Week-11, 2020

I come across many blog posts from various sources like Twitter, StackOverflow etc and some of them are very helpful. Also, in day to day work I learn few new things, explore some new tools. Usually I keep track of this information using Browser Bookmarks and Pocket. I thought may be this information could be useful for others too. So, I am going to share it weekly on my blog.

Continue reading »

Spring Cloud Tutorials – Auto Refresh Config Changes using Spring Cloud Bus

Problem In the previous article Introduction to Spring Cloud Config Server we have seen how to use Spring Cloud Config Server. But, the problem is to reload the config changes in Config Client applications we need to trigger /refresh endpoint manually. This is not practical and viable if you have large number of applications. Solution Spring Cloud Bus module can be used to link multiple applications with a message broker and we can broadcast configuration changes.

Continue reading »

Spring Cloud Tutorials – Introduction to Spring Cloud Config Server

Problem SpringBoot provides lot of flexibility in externalizing configuration properties via properties or YAML files. We can also configure properties for each environment (dev, qa, prod etc) separately using profile specific configuration files such as application.properties, application-dev.properties, application-prod.properties etc. But once the application is started we can not update the properties at runtime. If we change the properties we need to restart the application to use the updated configuration properties.

Continue reading »