- Sản phẩm & Dịch vụSản phẩm & Dịch vụ
- Giải phápGiải pháp
- Bảng giáBảng giá
- Công tyCông ty
- Tài liệuTài liệu
vi
vi
Chuyên mục với các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.
Technical Writer
I have over 5 years of experience writing technical documentation for tech products, making them accessible and user-friendly. My focus is always on providing clear and precise information. @#@ Tôi đã có hơn 5 năm kinh nghiệm viết tài liệu kỹ thuật cho các sản phẩm công nghệ, giúp người dùng dễ dàng tiếp cận và sử dụng. Tôi luôn tập trung vào việc cung cấp thông tin chính xác và dễ hiểu.
Thảo luận (0)
Đăng nhập để thảo luận
Hôm nay, tôi sẽ giúp các bạn tìm hiểu sâu vào cấu trúc của Spring Boot. Việc nắm vững những kiến thức này không chỉ giúp chúng ta sử dụng Spring Boot hiệu quả hơn mà còn cung cấp nền tảng vững chắc để gỡ lỗi và tối ưu hóa ứng dụng.

Spring Boot chủ yếu sở hữu bốn thành phần chính:
LƯU Ý: Ngoài bốn thành phần chính này, Spring Boot còn có thêm hai thành phần nữa:
Để nhanh chóng khởi tạo các dự án Spring Boot mới, chúng ta có thể sử dụng giao diện web “Spring Initializr” tại URL: https://start.spring.io. Chúng ta có nhiều IDE hỗ trợ Spring Boot như Eclipse IDE, IntelliJ IDEA, Spring STS Suite, v.v. Chúng ta sẽ đi sâu vào hai thành phần này trong các bài viết tới.
Còn bây giờ, chúng ta sẽ lần lượt phân tích chi tiết bốn thành phần chính của Spring Boot.

Spring Boot Starters là một trong những tính năng hay thành phần cốt lõi quan trọng nhất của Spring Boot Framework. Nhiệm vụ chính của Spring Boot Starter là nhóm các dependency phổ biến hoặc có liên quan lại thành một dependency duy nhất. Chúng ta sẽ khám phá chi tiết tuyên bố này với một ví dụ.
Ví dụ điển hình, chúng ta muốn phát triển một Spring Web Application với Tomcat WebServer. Khi đó, chúng ta cần thêm các dependency JAR tối thiểu sau vào file pom.xml của Maven hoặc build.gradle của Gradle:
spring-core-xx.jar)spring-web-xx.jar)spring-webmvc-xx.jar)servlet-xx.jar)Nếu chúng ta muốn thêm chức năng cơ sở dữ liệu, chúng ta cần bổ sung các JAR liên quan đến database như Spring JDBC, Spring ORM, Spring Transaction:
spring-jdbc-xx.jar)spring-orm-xx.jar)spring-transaction-xx.jar)Việc khai báo quá nhiều dependency trong các file build của chúng ta là một công việc tẻ nhạt và cồng kềnh đối với nhà phát triển. Đồng thời, nó còn làm tăng kích thước file build. Vậy giải pháp để tránh việc định nghĩa quá nhiều dependency trong các file build của chúng ta là gì?
Giải pháp chính là thành phần Spring Boot Starter. Spring Boot Starter kết hợp tất cả các JAR liên quan vào một file JAR duy nhất, cho phép chúng ta chỉ cần thêm một dependency duy nhất vào file build của mình.
Thay vì phải thêm 4 file JAR riêng lẻ như trên vào file build, chúng ta chỉ cần thêm duy nhất một file JAR: “spring-boot-starter-web”.
Khi chúng ta thêm dependency “spring-boot-starter-web” vào file build, Spring Boot Framework sẽ tự động tải tất cả các JAR cần thiết và thêm chúng vào classpath của dự án.

Tương tự, file JAR “spring-boot-starter-logging” sẽ tải tất cả các JAR dependency của nó như “jcl-over-slf4j”, “jul-to-slf4j”, “log4j-over-slf4j”, “logback-classic” vào classpath của dự án chúng ta.
Đó là tất cả về thành phần Spring Boot Starter. Chúng ta sẽ thảo luận chi tiết hơn với các ví dụ về Spring Boot trong những bài viết sắp tới.
Một thành phần cốt lõi quan trọng khác của Spring Boot Framework là Spring Boot AutoConfigurator. Hầu hết các nhà phê bình nền tảng Spring IO (Spring Framework) đều cho rằng: “Phát triển một ứng dụng dựa trên Spring đòi hỏi rất nhiều cấu hình (cấu hình XML hoặc cấu hình Annotation)”. Vậy làm thế nào để giải quyết vấn đề này? Giải pháp chính là Spring Boot AutoConfigurator.
Nhiệm vụ chính của Spring Boot AutoConfigurator là giảm thiểu cấu hình Spring. Khi chúng ta phát triển ứng dụng Spring bằng Spring Boot, chúng ta không cần định nghĩa bất kỳ cấu hình XML nào và gần như không cần hoặc chỉ cần cấu hình Annotation tối thiểu. Thành phần Spring Boot AutoConfigurator sẽ đảm nhiệm việc cung cấp các thông tin đó.
Ví dụ, nếu chúng ta muốn khai báo một ứng dụng Spring MVC sử dụng nền tảng Spring IO, chúng ta cần định nghĩa rất nhiều cấu hình XML như views, view resolvers, v.v. Nhưng nếu chúng ta sử dụng Spring Boot Framework, chúng ta không cần định nghĩa các cấu hình XML đó.
Spring Boot AutoConfigurator sẽ tự động xử lý việc này. Nếu chúng ta sử dụng file JAR “spring-boot-starter-web” trong file build của dự án, Spring Boot AutoConfigurator sẽ tự động giải quyết các views, view resolvers, v.v.
![]()
Và Spring Boot cũng giảm thiểu việc định nghĩa cấu hình Annotation. Nếu chúng ta sử dụng @SpringBootApplication annotation ở cấp độ class, Spring Boot AutoConfigurator sẽ tự động thêm tất cả các annotation cần thiết vào bytecode của lớp Java. Nếu chúng ta đọc tài liệu của Spring Boot, chúng ta có thể tìm thấy định nghĩa sau cho @SpringBootApplication:
@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited @Configuration @EnableAutoConfiguration @ComponentScan public @interface SpringBootApplication
Điều đó có nghĩa là, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiguration. Đó là tất cả về thành phần Spring Boot AutoConfigurator. Chúng ta sẽ thảo luận chi tiết hơn với các ví dụ về Spring Boot trong những bài viết sắp tới.
LƯU Ý:
Spring Boot CLI (Command Line Interface) là một phần mềm của Spring Boot giúp chúng ta chạy và kiểm tra ứng dụng Spring Boot từ cửa sổ lệnh. Khi chúng ta chạy ứng dụng Spring Boot bằng CLI, nó tự động sử dụng các thành phần Spring Boot Starter và Spring Boot AutoConfigurator để giải quyết tất cả các dependency và thực thi ứng dụng.
Chúng ta thậm chí có thể chạy ứng dụng Spring Web chỉ với các lệnh Spring Boot CLI đơn giản. Spring Boot CLI đã giới thiệu lệnh “spring” mới để thực thi các Groovy Scripts từ cửa sổ lệnh.
Ví dụ lệnh “spring”:
spring run HelloWorld.groovy
Ở đây, HelloWorld.groovy là tên file script Groovy. Tương tự như file mã nguồn Java có đuôi mở rộng .java, các file script Groovy có đuôi mở rộng .groovy. Lệnh “spring” thực thi HelloWorld.groovy và tạo ra kết quả. Thành phần Spring Boot CLI đòi hỏi nhiều bước như cài đặt CLI, thiết lập CLI, phát triển ứng dụng Spring Boot đơn giản và kiểm tra nó. Vì vậy, chúng ta sẽ dành một bài viết khác để thảo luận chi tiết về nó với một số ví dụ về Spring Boot. Hãy tham khảo bài viết tiếp theo của tôi về Spring Boot CLI.
Thành phần Spring Boot Actuator cung cấp nhiều tính năng, nhưng hai tính năng chính là:
Khi chúng ta chạy ứng dụng Spring Boot Web bằng CLI, Spring Boot Actuator tự động cung cấp hostname là “localhost” và số cổng mặc định là “8080”. Chúng ta có thể truy cập ứng dụng này bằng endpoint “https://localhost:8080/“.
Chúng ta sử dụng các phương thức yêu cầu HTTP như GET và POST để đại diện cho các Management EndPoints bằng Spring Boot Actuator. Chúng ta sẽ thảo luận chi tiết hơn về Spring Boot Actuator trong các bài viết sắp tới.
Luôn luôn được khuyến nghị rằng bạn nên hiểu cách mà Spring Boot Framework giúp giảm bớt các dependency trong quá trình build, cấu hình Spring, v.v. Hiểu cách Spring Boot hoạt động phía bên trong (under-the-hood).
Nếu bạn quen thuộc với ngôn ngữ lập trình Groovy, thì bạn đã biết phần lớn những điều này. Trong Groovy, chúng ta không cần phải thêm một số import và cũng không cần thêm một số dependency vào dự án Groovy. Khi chúng ta biên dịch các script Groovy bằng trình biên dịch Groovy (groovyc), nó sẽ tự động thêm tất cả các lệnh import mặc định rồi tiến hành biên dịch.
Tương tự, ngôn ngữ Groovy có một cơ chế Resolver để tự động tìm và thêm tất cả các file JAR cần thiết vào classpath của dự án Groovy. Spring Boot Framework sử dụng Groovy ở bên trong để tự động thêm một số thành phần mặc định như các lệnh import mặc định, phương thức main() của ứng dụng, v.v.
Grape là một công cụ giải quyết dependency nhúng. Grape là một trình quản lý dependency JAR được nhúng vào Groovy. Grape cho phép chúng ta nhanh chóng thêm các dependency từ kho lưu trữ Maven vào classpath của dự án để giảm thiểu định nghĩa file build. Mô hình lập trình của Spring Boot Framework chủ yếu được truyền cảm hứng từ mô hình lập trình Groovy. Spring Boot
Framework nội bộ phụ thuộc vào hai thành phần chính này: Groovy và Grape. Bạn có thể tham khảo tài liệu của Grape tại https://docs.groovy-lang.org/latest/html/documentation/grape.html để biết thêm chi tiết.

Đó là tất cả về các thành phần và cơ chế nội bộ của Spring Boot. Chúng ta sẽ thảo luận chi tiết hơn về các thành phần này với một số ví dụ về Spring Boot trong các bài viết sắp tới.
Qua bài viết này, chúng ta đã cùng nhau khám phá sâu sắc các thành phần cốt lõi tạo nên sức mạnh của Spring Boot. Nắm vững những kiến thức này sẽ trang bị cho bạn một công cụ mạnh mẽ để xây dựng các ứng dụng Java hiện đại một cách nhanh chóng, hiệu quả và dễ bảo trì. Bạn sẽ tự tin hơn trong việc cấu hình, triển khai và giám sát các dự án của mình, sẵn sàng đối mặt với những thách thức phức tạp trong phát triển phần mềm.