This tutorial aims to build a simple web service using spring boot .
Let's start by ddownload our start package from :
https://start.spring.io/
We will call our project solvability <=> Artifact a sub functionnality of an extranet web services portal tn.cnss.extranet.employeur <=>Group
We will also choose
maven to manage dependencies, tests and continuous dev/deployement actions
fig 1- Starting springboot package
Now w will import our project in eclipse environnement :
File > Import maven project
fig 2- Import project in eclipse
fig3- Before maven configuration
Once the project was imported, we will configure maven configuration in eclipse by indicating our M2_HOME
by default maven is configured to store dependencies on /user_home/.m2/repository as shown in this image
And after modification:
fig4- After maven changes
Now we will add our unique additional dependency (oracle driver)
Here ive already in my repo oracle 11.2.0.4 driver
For those who don't have oracle driver installed :
1- Start by downloading the ojdbc (or copy it from sqldeveloper tool if you use it)
2- run this command :
mvn install:install-file -Dfile=<path-to-oracle-driver-file>
Once all is done we add the dependency tag in our pom file
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>11.2.0.4</version>
</dependency>
fig5- Oracle dependency
fig6- application.properties file
Now let's continue:
We have to setup our /src/main/resources/application.properties file; and put some needed parmaters:
in our case:
spring.datasource.url=jdbc\:oracle\:thin\:@ip.ip.ip.ip:\port\:SID
spring.datasource.username=user_name
spring.datasource.password=user_password
spring.jpa.properties.hibernate.show_sql=true_or_false
spring.jpa.properties.hibernate.use_sql_comments=true_or_false
spring.jpa.properties.hibernate.format_sql=true_or_false
server.port = our_webservice_port_number
logging.level.org.hibernate=ERROR_see_hibernate_logging_level
NB: ERROR is less verbose
Note now our application can start without errors.
Let's continue
Now we will create our RestController (Entry points for remote invokations)
A RestController is a java class annotated with @RestController
(Reference to org.springframework.web.bind.annotation.RestController)
To make our code structured we can create a package controller under our project
fig7- controllers package
And then we create our controller under the new created package
In our case we will check the solvability of a customer we will need two params
root number and key (consistency)
we will invoke that method from "APP_URL/check-solvability " with simple http GET request
So we use
@GetMapping annotation
So the behavior of our code could be
/**
* Check if customer is solvable or no
* @param root
* @param key
* @return true or no
*/
@GetMapping( "/check-solvability/{rootValue}/{keyValue}")
public String getCustomerFinancialSituation(@PathVariable String rootValue, @PathVariable String keyValue ){
//Some logic here
//For exemple if we will return true always
JSONObject output = new JSONObject();
output.put("result", "ok");
output.put("value","1");
return output.toString();
}
Let's instroduce a business layer (it's logic that the business rules are delegated to a seperated class
And we create our business layer or business package
and business implementations package
fig8- business package
And we create this interface that will be implemented by the financial dev team
fig9- business interface
Let's continue
Once interface is created we can proceed to business injection in the main controller, this can be done by these two lines
@Autowired
private FinancialBusiness financialBusiness;
fig10- business injection
Lets's continue
Now we create implementation package for business, and a specific implementation for our previously ceated interface Financial business
fig11- business interface implementation
if you want to interoduce repositories cantact me for more advanced example.