Post

Những khái niệm, và thuật ngữ trong Spring Boot

Những khái niệm, và thuật ngữ trong Spring Boot

Trước khi học một ngôn ngữ mới, tôi thường hay có thói quen tìm hiểu các khái niệm, thuật ngữ trong ngôn ngữ đó. Mục đích để hiểu rõ không bị nhầm lẫn trong quá trình code cũng như giao tiếp với đồng nghiệp trở dễ dàng hơn. Trong bài viết này tôi sẽ ghi chú lại các thuật ngữ, khái niệm cơ bản nhất trong Spring Boot.

Spring

Spring là một hệ sinh thái (ecosystem) mã nguồn mở dùng để xây dựng các ứng dụng Java hiện đại, dễ kiểm thử, dễ mở rộng. Spring không phải là một framework riêng lẽ mà nó tập hợp nhiều project/framework con.

Thành phần conChức năng tương đương trong .NET
Spring CoreDI Container (như built-in DI của .NET)
Spring MVCASP.NET MVC / ASP.NET Core
Spring Data JPAEntity Framework Core
Spring SecurityASP.NET Identity / Authentication
Spring BootASP.NET Core Boilerplate / Startup

Spring Framework

Spring Framework là trái tim (core) của hệ sinh thái Spring. Nó cung cấp những thành phần cốt lõi như:

Thành phầnGiải thích
IoC ContainerCung cấp Dependency Injection (DI)
AOPLập trình hướng khía cạnh (Aspect-Oriented Programming), như Middleware hoặc ActionFilter
Spring MVCWeb framework theo mô hình MVC
TransactionQuản lý giao dịch (ACID)
Data AccessHỗ trợ JDBC, ORM như Hibernate

Spring Boot

Spring Boot là một layer mở rộng của Spring Framework được tạo ra để:

  • Để đơn giản hóa việc cấu hình Spring Framework.
  • Tự động cấu hình (auto-configuration): Không cần phải viết nhiều XML như Spring Framework.
  • Khởi tạo nhanh ứng dụng với cấu trúc mặc định.
  • Tích hợp sẵn các công cụ như web server (Tomcat), logging, security,…
Ví dụSpring FrameworkSpring Boot
Tạo REST APIPhải cấu hình controller, servlet, DIChỉ cần @RestController, @GetMapping, done!
Chạy ứng dụngCần deploy lên web server (Tomcat, JBoss)Chạy trực tiếp bằng java -jar app.jar
Cấu hìnhXML hoặc Java ConfigAuto-config bằng annotation, application.yml
Mục tiêuLinh hoạt, kiểm soát caoDễ dùng, tập trung business logic

Cấu trúc ứng dụng & khởi tạo

Thuật ngữÝ nghĩa
Spring BootFramework để phát triển ứng dụng Java dễ dàng hơn với cấu hình tối thiểu.
Spring InitializrWeb tool để tạo project Spring Boot ban đầu (https://start.spring.io).
@SpringBootApplicationAnnotation chính khởi động toàn bộ Spring Boot Application.
main() methodĐiểm bắt đầu của ứng dụng Java, gọi SpringApplication.run(...).

Dependency Injection (DI) & IoC

Thuật ngữÝ nghĩa tương đương trong .NET
@ComponentĐánh dấu class là một bean do Spring quản lý.
@ServiceBean đại diện cho tầng xử lý nghiệp vụ.
@RepositoryBean đại diện cho tầng truy cập dữ liệu.
@AutowiredTiêm phụ thuộc (Dependency Injection).
@BeanĐịnh nghĩa thủ công một bean trong @Configuration.
@QualifierChỉ định bean cụ thể khi có nhiều lựa chọn tiêm.

REST API & controller

Thuật ngữGiải thích
@RestControllerTương tự [ApiController] – trả về JSON mặc định.
@GetMappingTương đương [HttpGet] – ánh xạ HTTP GET request.
@PostMappingTương đương [HttpPost].
@RequestMappingMapping endpoint chung, có thể dùng cho class hoặc method.
@RequestBodyNhận body request (JSON → object).
@PathVariableLấy giá trị từ URL path (giống {id} trong route).
@RequestParamLấy query string (?name=value)

Data & JPA (ORM)

Thuật ngữGiải thích hoặc tương đương với .NET
Spring Data JPAFramework ORM giống Entity Framework.
@EntityĐánh dấu class là bảng dữ liệu.
@IdPrimary key.
@GeneratedValueGiá trị tự động tăng.
@OneToMany, @ManyToOneQuan hệ giữa các bảng.
JpaRepository<T, ID>Interface để thao tác CRUD với DB.
@QueryViết JPQL query tùy chỉnh.

Exception Handling & Validation

Thuật ngữÝ nghĩa
@ControllerAdviceGlobal Exception Handler (giống Middleware bắt lỗi).
@ExceptionHandlerXử lý loại Exception cụ thể.
@ValidKích hoạt validation khi nhận request.
@NotNull, @Size, @PatternCác annotation validate dữ liệu đầu vào.
BindingResultLưu kết quả validation để xử lý thủ công.

Security

Thuật ngữGiải thích
Spring SecurityFramework bảo mật – authentication, authorization
@EnableWebSecurityBật tính năng bảo mật Web trong Spring
UserDetailsServiceInterface dùng để load thông tin người dùng
PasswordEncoderMã hóa mật khẩu (bCrypt, v.v.)
JWTJSON Web Token – cơ chế xác thực phổ biến

Testing

Thuật ngữGiải thích hoặc tương đương trong .NET
JUnitTesting framework tương đương xUnit/MSTest
MockitoMocking framework giống Moq
@SpringBootTestAnnotation để test toàn bộ ứng dụng
MockMvcDùng để test controller mà không cần chạy web

Cấu hình ứng dụng

Thuật ngữGiải thích
application.properties/ymlTương đương appsettings.json trong .NET
@ValueInject giá trị cấu hình vào biến Java
@ConfigurationPropertiesMapping cả object cấu hình vào class
@Profile("dev")Dùng để định nghĩa bean chỉ hoạt động trong môi trường dev

Deploy & Build

Thuật ngữGiải thích
Maven / GradleCông cụ quản lý phụ thuộc và build project
.jarFile ứng dụng Spring Boot runnable
java -jarChạy ứng dụng Spring Boot
DockerĐóng gói ứng dụng Spring Boot để deploy
This post is licensed under CC BY 4.0 by the author.