OLHub

Spring là gì & nền tảng IoC

Hiểu vì sao Spring tồn tại, IoC/DI bản chất, ApplicationContext, bean lifecycle, scope, và sự khác biệt @Configuration / @Bean / @Component. Nền tảng để hiểu mọi thứ trong Spring Boot.

7 bài · ~196 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Spring là gì — bài toán framework giải quyết và bản đồ kiến trúc

    Vì sao Spring xuất hiện năm 2003 và vẫn dominate sau 22 năm. Bài toán Java EE để lại, Rod Johnson và quyển sách 800 trang, kiến trúc 20 module của Spring Framework, 5 lớp cốt lõi của Spring Boot, vòng đời 1 HTTP request, và lộ trình các bài tiếp theo bóc tách từng phần.

    ~30 phút
  2. 02

    IoC và DI — bóc tách 2 thuật ngữ bị lạm dụng nhất

    Inversion of Control là principle, Dependency Injection là 1 implementation cụ thể. Bài này phân biệt rõ qua code, đối chiếu với Martin Fowler 2004, so sánh @Autowired (Spring) vs @Inject (JSR-330), 3 hình thức inject, 4 autowire mode, generic-aware injection, và circular dependency 3 cách giải.

    ~28 phút
  3. 03

    ApplicationContext và BeanFactory — container hoạt động ra sao bên dưới

    BeanFactory là interface gốc, ApplicationContext extend với enterprise features (event, i18n, environment, resource). Bài này bóc 2 interface, refresh() 12 bước, BeanDefinition format, Environment + PropertySource ordering, Resource abstraction, parent-child context, và vì sao @SpringBootApplication chỉ là 3 annotation.

    ~28 phút
  4. 04

    Bean lifecycle — 9 giai đoạn từ instantiate đến destroy

    Mọi bean Spring đều đi qua 9 giai đoạn lifecycle có thứ tự cố định. Bài này map từng giai đoạn vào callback annotation cụ thể (@PostConstruct, InitializingBean, BPP), bóc tách *Aware interfaces, JDK vs CGLIB proxy, SmartLifecycle, graceful shutdown production, và pitfall classic về self-call @Transactional.

    ~26 phút
  5. 05

    Bean scopes — singleton, prototype, request, session

    Spring có 6 scope built-in. Bài này giải thích cơ chế lưu trữ của từng scope, vì sao singleton là default, pitfall scope-mismatch (singleton hold prototype), 3 cách giải, scoped proxy mode (INTERFACES vs TARGET_CLASS), thread-binding cơ chế của request/session, custom scope với ThreadLocal, và refresh scope của Spring Cloud.

    ~26 phút
  6. 06

    @Configuration, @Bean, @Component — 3 cách khai báo bean và sự khác biệt

    3 annotation trông giống nhau nhưng khác bản chất: @Component cho class bạn sở hữu, @Bean cho bean tạo bằng method (third-party), @Configuration tạo class chứa @Bean. Bài này bóc cơ chế CGLIB enhancement, lite mode vs full mode, stereotype @Service/@Repository/@Controller, @Import, ComponentScan filter, @Conditional* family, và meta-annotation tự định nghĩa.

    ~28 phút
  7. 07

    Mini-challenge: tự build mini IoC container 80 dòng

    Bài thực hành khép lại Module 1 — code 1 IoC container đơn giản đủ tính năng: scan @Component, resolve dependency qua constructor, lifecycle @PostConstruct. Chứng minh Spring không phải magic — chỉ là reflection + topological sort + map cache.

    ~30 phút