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
Now w will import our project in eclipse environnement :
File > Import maven project
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:
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
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
And we create this interface that will be implemented by the financial dev team
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
Lets's continue
Now we create implementation package for business, and a specific implementation for our previously ceated interface Financial business
if you want to interoduce repositories cantact me for more advanced example.
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
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
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
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
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.