I. Introduction
Thực tế Spring Boot là một framework lớn và phức tạp, sử dụng rất nhiều abstraction nên việc hiểu được các khái niệm của nó không phải là điều dễ dàng gì. Nhưng cũng vì có nhiều abstraction layer nên chúng ta chỉ việc tuân theo Hollywood Priciple của nó để đỡ phải mất công reinventing the wheel
và có nhiều thời gian hơn để build những gì chúng ta thích.
Don't call us, we'll call you
Chúng ta có thể thực hiện việc kết nối đến MySQL database như ví dụ sau bằng cách tuân theo những tiêu chuẩn có sẵn của Spring Boot mà thậm chí còn không biết khái niệm port
trong khoa học máy tính là cái gì =)). Spring Boot bảo là cậu cứ làm theo chỉ dẫn của tớ là mọi việc sẽ đâu vào đấy.
1. Step 1
Cậu hãy tạo Configuration đi.
application.yml
spring: datasource: url: jdbc:mysql://localhost:3306/db_name username: db_username password: db_password driver-class-name: com.mysql.cj.jdbc.Driver jpa: database-platform: org.hibernate.dialect.MySQLDialect
2. Step 2
Sau khi có Configuration thì cậu hãy tạo bean để lúc nào cần còn dùng.
UserRepository.java
import org.springframework.data.jpa.repository.JpaRepository; @Repository
public interface UserRepository extends JpaRepository<User, Long> { // Define additional methods for custom database operations if needed
}
3. Step 3
Autowired depedency vào và sử dụng thôi. That's it.
UserService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserService { @Autowired private UserRepository userRepository; // Use the repository methods for performing database operations public User getUserById(Long id) { return userRepository.findById(id).orElse(null); }
}
2. Analogy
Khi mới bắt đầu với Spring Boot, chúng ta hoàn toàn làm được những cái này thông qua một vài tutorial trên mạng nhưng có thể phần lớn trong số chúng ta cảm thấy khá lúng túng và khó hiểu. Hy vọng là qua analogy sau đây mọi người sẽ hiểu hơn về về ví dụ nêu trên.
Hãy hình dung về một người nông dân có một cánh đồng hoa màu. Người nông dân này chịu trách nhiệm gieo hạt, tưới nước và thu hoạch sau khi cây đã lớn. Nói chung là quản lý cánh đồng hoa màu đó. Khi đối chiếu với ứng dụng Spring Boot thì:
- Người nông dân là Spring Boot application.
- Cánh đồng là Application Context/IoC Container.
- Cây trồng/hoa màu là Spring Boot's beans.
- Các công cụ giúp người nông dân làm việc với cây trồng là depedencies.
Người nông dân gieo hạt (configurations/beans) trên cánh đồng (Application Context). Hạt phát triển thành cây trồng (beans) mà người nông dân sau đó có thể thu hoạch và sử dụng (inject depedency into other beans). Người nông dân sau đó lại cùng các công cụ (depedencies) để lại tiếp tục quá trình đó.
Trong ví dụ trên, quá trình gieo hạt chính là khai báo Configuration file và sau khi khai báo UserRepository sử dụng file này thì chúng ta có cây trồng hoàn chỉnh (bean). Khi đã có cây trồng (tức là bean đã tạo thành) thì việc thu hoạch và sử dụng chính là việc autowired UserRepository vào UserService, nó cho phép việc thao tác/tạo sự thay đổi trên cơ sở dữ liệu.
===
Thanks for reading.