dependency injection

[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.

Phần 1 của series khá là ngắn, mình sẽ trình bày tổng quan về Spring IoC container.


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. BeanFactoryApplicationContext

Hai package org.springframework.beansorg.springframework.context là những nền tảng của Spring IoC container. Trong đó:

  • Interface BeanFactory của package org.springframework.beans cung cấp framework cấu hình và chức năng cơ bản.
  • Interface ApplicationContext của package org.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.

Spring IoC Container

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 ApplicationContextClassPathXmlApplicationContextFileSystemXmlApplicationContext (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 ApplicationContextAnnotationConfigApplicationContext (dành cho ứng dụng standalone) và AnnotationConfigWebApplicationContext (dành cho ứng dụng web).

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration