In today’s software development, backend systems operate silently in the background while users interact with web or mobile applications, handling data processing. In this course, we will learn how to develop the backend using Spring Boot and understand the hierarchical structure through the analogy of a cafe and bakery.
1. What is Spring Boot?
Spring Boot is a Java-based framework built on the Spring Framework, designed to help developers quickly build applications without complex configurations. With various starter packages to add features and default configurations, Spring Boot reduces the effort required for customization.
2. Overview of Backend Development
Backend development includes various tasks such as data storage, business logic processing, and API provisioning. For example, in a food delivery order website, users select menus and make payments on the frontend while the backend processes these requests to save order details and relay them to the kitchen.
3. Understanding Hierarchical Architecture
Hierarchical architecture is a common pattern in software design where each layer performs a specific role. Let’s consider the analogy of a ‘cafe and bakery’ system.
- Presentation Layer: The user enters the cafe to place an order. This is the UI represented in a web browser.
- Business Layer: The barista processes orders according to customer requests. This is the service layer that handles business logic.
- Data Layer: This is where customer order information is stored. It is permanently stored in the server’s database.
4. Creating a Spring Boot Project
You can easily create a Spring Boot project via Spring Initializr. Below is an example using Gradle.
curl https://start.spring.io/starter.zip \ -d dependencies=web,jpa,mysql \ -d name=cafe-bakery \ -d packageName=com.example.cafe \ -o cafe-bakery.zip
5. Building the Presentation Layer
The presentation layer handles requests made through the web browser. You can implement a RESTful API using Spring MVC.
@RestController @RequestMapping("/api/orders") public class OrderController { @Autowired private OrderService orderService; @PostMapping public ResponseEntitycreateOrder(@RequestBody Order order) { Order createdOrder = orderService.createOrder(order); return new ResponseEntity<>(createdOrder, HttpStatus.CREATED); } }
6. Implementing Business Logic
The business layer is responsible for actual business logic. Below is an example of a service layer for order creation.
@Service public class OrderService { @Autowired private OrderRepository orderRepository; public Order createOrder(Order order) { // Business logic return orderRepository.save(order); } }
7. Building the Data Layer
The data layer interacts with the database. Below is a JPA repository that can handle orders.
@Repository public interface OrderRepository extends JpaRepository{ }
8. Configuring MySQL Database
To connect Spring Boot with the MySQL database, you need to configure the application.properties file.
spring.datasource.url=jdbc:mysql://localhost:3306/cafe_bakery spring.datasource.username=root spring.datasource.password=password spring.jpa.hibernate.ddl-auto=update
9. Testing and Deployment
Spring Boot applications can be tested using JUnit and Mockito. By testing each layer, you can ensure that the code operates correctly.
@SpringBootTest public class OrderServiceTest { @Autowired private OrderService orderService; @MockBean private OrderRepository orderRepository; @Test public void createOrder_ShouldReturnOrder_WhenOrderIsValid() { Order order = new Order(...); when(orderRepository.save(any())).thenReturn(order); // Mock behavior Order createdOrder = orderService.createOrder(order); assertNotNull(createdOrder); } }
10. Conclusion
In this course, we explored the basic flow of backend development using Spring Boot and explained hierarchical architecture through the analogy of a cafe and bakery. It is important to understand how each layer collaborates to make the overall system function. Now you are ready to build and operate a simple backend system.