Spring Core & Boot
14/41
Bài 14 / 41~5 phútContainer InternalsMiễn phí… lượt xem

Tổng Kết Module: Làm Chủ Toàn Diện Container Internals

Tổng kết module Container Internals: cấu trúc dữ liệu BeanFactory, giải mã 12 bước refresh, phân biệt BFPP với BPP và cơ chế nạp Resource.

Bạn vừa hoàn thành việc bóc tách toàn diện bên trong cỗ máy IoC Container của Spring Framework. Dưới đây là bảng tổng hợp kiến thức cốt lõi giúp tra cứu nhanh chóng và hệ thống.

Bảng tổng kết kiến thức cốt lõi (Cheat Sheet)

Khái niệmBản chất kỹ thuật cốt lõiBài học chi tiết
BeanFactoryGiao diện tối thiểu tra cứu bean; cơ chế nạp lười (Lazy) mặc định01-beanfactory-vs-applicationcontext
DefaultListableBeanFactoryTrái tim lưu trữ: beanDefinitionMap (siêu dữ liệu) + singletonObjects (instance)01-beanfactory-vs-applicationcontext
Singleton ScopeMột entry lưu trong singletonObjects của container; không phải static toàn JVM01-beanfactory-vs-applicationcontext
ApplicationContextBọc DefaultListableBeanFactory (Composition) + 4 capability enterprise; nạp Eager01-beanfactory-vs-applicationcontext
refresh() 12 bướcChu trình 3 giai đoạn: Chuẩn bị -> Biến đổi metadata (BFPP/BPP) -> Cấp phát bean02-refresh-lifecycle
BeanDefinitionBản vẽ kỹ thuật lưu siêu dữ liệu (class, scope, dependencies) trước khi tạo instance03-beandefinition-bfpp
BFPP vs BPPBFPP sửa metadata (bước 5); BPP biến đổi instance và bọc proxy (bước 11)03-beandefinition-bfpp
EnvironmentQuản lý properties và profiles; thứ tự ưu tiên: Command-line > System Property > Env Var04-environment-propertysource
Relaxed BindingTự động ánh xạ linh hoạt: biến môi trường POSIX APP_URL sang property app.url04-environment-propertysource
ResourceTrừu tượng hóa truy xuất file qua getInputStream(); classpath*: quét đa JAR05-resource-springbootapplication
@SpringBootApplicationMeta-annotation hợp nhất: @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan05-resource-springbootapplication
Mini IoC ContainerTự tay hiện thực container bằng Java qua Reflection + Topological Sort06-mini-challenge-mini-ioc

Mô hình tư duy cốt lõi (Mental Model)

Một Spring Container thực chất = một DefaultListableBeanFactory = vài bảng băm lưu trữ. Phương thức refresh() chịu trách nhiệm lấp đầy các bảng băm đó qua 12 bước tuần tự. Loại bỏ lớp vỏ "phép thuật", Spring Container chính là cặp ánh xạ Map<String, BeanDefinition> và Map<String, Object> cùng logic xử lý phụ thuộc bao quanh.

✅ Self-assessment

Bạn đã đạt module này nếu trả lời được:

  • Explain BeanFactory vs ApplicationContext và data structure thật (singletonObjects, beanDefinitionMap)
  • Trace refresh() 12 bước qua 3 giai đoạn biến config thành runtime container
  • Compare BeanFactoryPostProcessor (metadata) vs BeanPostProcessor (instance) và BeanDefinition
  • Implement externalized config với Environment + PropertySource đúng thứ tự ưu tiên
  • Diagnose lỗi container (bean không scan, sai thứ tự property) qua Resource + @SpringBootApplication

Liên hệ các module khác

Module tiếp theo: Bean Lifecycle & Scopes — Vòng Đời Và Phạm Vi Bean

Bài này có giúp bạn hiểu bản chất không?

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Thảo luận & góp ý

Hỏi đáp về bài này

Bài tiếp theo

Vòng Đời Và Phạm Vi Hoạt Động Của Bean Trong Spring