Tuesday, May 9, 2017

First Microservice - Lead Service

This is a continuation of my previous post where I listed the key domain components of CRM. For sake of simplicity, I will focus on just two key components - Lead and Opportunity respectively. These two modules will help me explore end to microservice implementation. I will be primarily using Spring framework's support to deliver the microservices. I am deliberating on a nice interesting Javascript framework for the front end. More on this later.


For the time being, I am just going to focus on building the backend and cloud enable it. Then slowly I am going to add the front end and security to the backend and front end. I will also explore the complete Sping Cloud gamut of projects and beyond. I will then deliberate on cloud-native applications, transactions and actually making this application suitable to run on virtually any cloud. I will also explore cloud and microservices application design patterns. Last but not the least we also need to check where this application fits in the maturity model for the 12-factor application.

Step 1 - Create a Spring Boot quickstart project using STS.

I am using the 64-bit version of STS 3.8.4 on my laptop.
The first step is to click in the following sequence:

File -> New -> Spring Starter Project. In the dialog fill out the data as shown in Figure 1.

Figure 1 - Configure Spring Starter Project
Then click on 'Next' to fill out the final dialog as shown in Figure 2. Once the final dialog is filled out with the selections click on 'Finish'.

Figure 2 - Select the dependencies

Step 2 - Add the Lead domain class.

Let's go ahead and add the lead domain class. I am assuming some familiarity with Eclipse/STS and will not show how to create a new package or a Java class.

Listing 1 - Lead.java

The common properties are in the BaseEntity class which is shown in Listing 2.
Listing 2 - BaseEntity.java 

The Address class is embedded in the Lead class. This is shown in Listing 3.
Listing 3 - Address.java
I will end the day today by adding the Lead JPA repository.

Listing 4 - LeadRepository.java
The source code is hosted on Github.
GitHub Repo - https://github.com/kdhrubo/playground.git


  1. Lead Abatement and Lead Hazard Standards. There are numerous state, federal and industrial standards for lead exposure, lead abatement, testing for lead and removing it. This article addresses the most commonly cited standards on lead. An Introduction to lead exposure