Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
[Series] Spring Core - Keep It Simple (P1): Spring IoC container
Trước đây khi mới học Spring, mình thường nhảy thẳng lên tìm hiểu các project như Spring MVC hay Spring Boot để viết ứng dụng, thỉnh thoảng mới ngó qua Spring Core - cốt lõi của Spring Framework. Trong quá trình làm việc thực tế, mình mới thấy điều này khá nguy hiểm. Bên cạnh đó, documentation gốc của Spring Core https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html có thể nói là khá dài, nhiều thuật ngữ chuyên môn liên quan đến OOP (lập trình hướng đối tượng), OOD (thiết kế hướng đối tượng). Mình quyết định viết 1 series với hi vọng có thể tổng hợp những kiến thức cơ bản và trọng tâm, hay động đến trong thực tế của Spring Core. Phạm vi của series sẽ nằm trong phần 1. The IoC Container của documentation thôi nhé :D.
Series gồm có 8 phần:
- Phần 1: Spring IoC Container
- Phần 2: Tổng quan về bean
- Phần 3: Dependency Injection
- Phần 4: Component
- Phần 5: Tìm kiếm bean
- Phần 6: Lifecycle callback của bean
- Phần 7: Tìm hiểu thêm về khởi tạo bean
- Phần 8: Kiểm tra thông tin của bean
1. Spring IoC Container là gì?
IoC (Inversion of Control) container được xem là cốt lõi của Spring Framework, giúp lập trình viên quản lý quá trình thực thi DI (Dependency Injection) trong ứng dụng một cách tự động.
Các đối tượng tạo nên xương sống của ứng dụng và được quản lý bởi Spring IoC Container được gọi là các bean.
2. BeanFactory
và ApplicationContext
Hai package org.springframework.beans
và org.springframework.context
là những nền tảng của Spring IoC container. Trong đó:
- Interface
BeanFactory
của packageorg.springframework.beans
cung cấp framework cấu hình và chức năng cơ bản. - Interface
ApplicationContext
của packageorg.springframework.context
bổ sung thêm các chức năng dành riêng cho doanh nghiệp như internationalization, AOP, transaction management, ...
Chúng ta có thể xem ApplicationContext
giống như là một subinterface bổ trợ cho BeanFactory
. Do đó trong thực tế, chúng ta sẽ ưu tiên sử dụng ApplicationContext
hơn là BeanFactory
.
Hình dưới đây mô tả tổng quan luồng hoạt động của Spring IoC Container. Spring IoC Container (mà đại diện là ApplicationContext
) sau khi nạp các POJO, sẽ kết hợp với configuration metadata (được biểu diễn bằng XML hoặc Java code) để khởi tạo, cấu hình và lắp ráp các bean. Lúc này, chúng ta sẽ có một ứng dụng được cấu hình đầy đủ và có thể thực thi được.
3. Hai cách cấu hình một ứng dụng Spring
Do configuration metadata có 2 cách biểu diễn là XML và Java code, nên chúng ta sẽ có 2 cách để cấu hình một ứng dụng Spring là cấu hình bằng XML và cấu hình bằng Java code. Trong tutorial này, chúng ta sẽ tập trung vào cách cấu hình này nhé.
Với cấu hình bằng XML, các implementation hay dùng của ApplicationContext
là ClassPathXmlApplicationContext
và FileSystemXmlApplicationContext
(dành cho ứng dụng standalone) và XmlWebApplicationContext
(dành cho ứng dụng web).
Với cấu hình bằng Java code, implementation hay dùng của ApplicationContext
là AnnotationConfigApplicationContext
(dành cho ứng dụng standalone) và AnnotationConfigWebApplicationContext
(dành cho ứng dụng web).
...
Trong phần 2 của series, mình sẽ trình bày tổng quan về bean.





