Simple Spring Boot REST API
đź•“ 45 minutes
What you’ll learn​
- How to set up a SpringBoot application.
- Create a simple REST API using SpringBoot scaffolder.
Project Source​
This sample project can be cloned from: https://gitlab.cloud.codenow.com/public-docs/java-spring-boot-demo/java-spring-boot-simple-rest-api
Prerequisites​
- You are already familiar with CodeNOW basics.
- You are familiar with the concepts of REST web services.
- You have already created a new application component with SpringBoot scaffolder. See the How To Create a New Application Component tutorial.
- You have already set up your local development environment for Java. See the Java Spring Boot Local Development tutorial.
- Cloned application GIT repository and opened project in IDE.
Steps​
-
Add the new model classes
Customer
andOrder
. They are very simple POJO classes with model attributes.-
Generate getters, setters and constructor. For example:
package org.example.service.model;
public class Customer {
private int id;
private String firstName;
private String lastName;
public Customer(int id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
-
-
Add a new service interface, for example:
package org.example.service.business;
import org.example.service.model.Customer;
import java.util.List;
public interface CustomerService {
public List<Customer> getAll();
public Customer getById(int id);
} -
Add its implementation emulating a simple business service:
package org.example.service.business.impl;
import org.example.service.business.CustomerService;
import org.example.service.model.Customer;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
@Service
public class CustomerServiceImpl implements CustomerService {
// this list serves only for testing purposes, real-world applications
// will use appropriate resource managers instead
private List<Customer> customers;
// initialize test data
@PostConstruct
private void initializeList() {
customers = new ArrayList<>();
customers.add(new Customer(1, "John", "Petrucci"));
customers.add(new Customer(2, "Zack", "Wylde"));
}
@Override
public List<Customer> getAll() {
return customers;
}
@Override
public Customer getById(int id) {
for (Customer c : customers) {
if (c.getId() == id)
return c;
}
return null;
}
} -
Please note that we annotated service with Spring's
@Service
so it can be recognized as a service bean and will be instantiated by dependency injection. -
Add a new class representing a REST controller. For example:
package org.example.service.controller;
@RestController
@RequestMapping("/customers")
public class CustomerController {
@Autowired
CustomerService customerService;
@GetMapping
public List<Customer> getAll() {
return customerService.getAll();
}
@GetMapping("/{id}")
public ResponseEntity<Customer> getCustomer(@PathVariable int id) {
Customer customer = customerService.getById(id);
if (customer != null)
return new ResponseEntity<>(customer, HttpStatus.ACCEPTED);
else
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}- Please note that we "auto-wired" the service bean created in earlier steps.
-
Try to build and run the application in your IDE. After startup, you should be able to access your new controller's swagger: http://localhost:8080/swagger/index.html
- For the correct setup, check the
README.md
file in the project root or see the tutorial Java Spring Boot Local Development, section Prepare local development IDE. - If you need to change configuration parameters, for example the TCP port, please do so in codenow/config/application.yaml.
- Build and run our application. By default it runs on http://localhost:8080/customers
- You can use any browser navigating to our service URL. You will receive a JSON response.
- For the correct setup, check the
Deploy to CodeNOW​
If your code works in the local development, you are ready to push your changes to GIT and try to build and deploy your new component version to the CodeNOW environment.
- For more information about application deployment, see the Application Deployment and Deployment Monitoring tutorials.
What’s next?​
See our other developer guides: