Tìm hiểu Spring IoC , Inversion of Control trong Spring

Trong bài viết này tôi sẽ giới thiệu đến các bạn học lập trình java web về spring IoC và ý nghĩa của Inversion of Control là gì trong Spring Framework.

1. IoC là gì?

IoC(Inversion of Control): Đảo ngược điều khiển, nó giúp làm thay đổi luồng điều khiển của chương trình một cách linh hoạt. Thường dùng với Dependency Injection. Xem thêm bài viết về Dependency Injection: tại đây

2. Spring IoC

IoC Container là thành phần thực hiện IoC.

Trong Spring, Spring Container (IoC Container) sẽ tạo các đối tượng, lắp rắp chúng lại với nhau, cấu hình các đối tượng và quản lý vòng đời của chúng từ lúc tạo ra cho đến lúc bị hủy.

Spring container sử dụng DI để quản lý các thành phần, đối tượng để tạo nên 1 ứng dụng. Các thành phần, đối tượng này gọi là Spring Bean (mình sẽ nói về Spring Bean trong các bài sau)

Để tạo đối tượng, cấu hình, lắp rắp chúng, Spring Container sẽ đọc thông tin từ các file xml và thực thi chúng.

IoC Container trong Spring có 2 kiểu là:

BeanFactory và ApplicationContext

Sự khác nhau giữa BeanFactory và ApplicationContext:

BeanFactory và ApplicationContext đều là các interface thực hiện IoC Container. ApplicationContext được xây dựng BeanFactory nhưng nó có thêm một số chức năng mở rộng như tích hợp với Spring AOP, xử lý message, context cho web application.

3. Ví dụ với BeanFactory và ApplicationContext.

3.1 BeanFactory

Để sử dụng Spring Bean ta cần khai báo thư viện spring-bean sau:

Xây dựng lớp HelloWorld.java như sau:

Để tạo đối tượng HelloWorld thông qua IoC container ta sẽ cấu hình nó trong file beans.xml

Bây giờ ta sẽ tạo một BeanFactory để đọc các thông tin cấu hình và tạo ra đối tượng HelloWorld.

BeanFactory chỉ là 1 interface, nên ở đây mình dùng DefaultListableBeanFactory, một implement của BeanFactory. Ở các version cũ thì bạn sẽ thấy hay sử dụng XmlBeanFactory nhưng nó bị đánh dấu @Deprecated ở các version mới.

Kết quả khi chạy sẽ hiển thị được dòng: Hello World !

3.2 Application Context

Để sử dụng Spring Bean ta cần khai báo thư viện spring-context sau:

Tôi sẽ tạo đối tượng phức tạp hơn HelloWorl.java một chút. Ví dụ lớp DataResource.java chứa thông tin kết nối tới cơ sở dữ liệu cần làm việc.

Để tạo đối tượng HelloWorld thông qua IoC container ta sẽ cấu hình nó trong file applicationContext.xml (lưu ý là bạn đặt tên file là gì cũng được: bean.xml, applicationContext.xml, dataresource.xml… nhưng cần phải nhớ file cấu hình cho cái gì)

Tạo một đối tượng ApplicationContext để lấy thông tin từ file cấu hình và tạo đối tượng DataResource

Khi chạy chương trình sẽ hiển thị được kết quả như sau:

Bây giờ bạn muốn thay đổi messge trong đối tượng HelloWorld, hay database của bạn thay đổi username/password hay bạn đổi kết nối sang database khác bạn chỉ cần đổi lại thông tin trong file config .xml là đã thay đổi được luồng chạy của chương trình, đó chính là IoC.

 

Hy vọng qua bài viết này đã giúp các bạn học lập trình java hiểu được về IoC trong Spring Framework là gì và làm việc với nó hiệu quả. 

Bên cạnh đó bạn muốn học lập trình web qua dự án cùng chuyên gia Stanford có thể xem ngay khoá học: tại đây

=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 – 0866 586 366
Website: https://stanford.com.vn
Facebook: http://bit.ly/2FN0TYb
Youtube: http://bit.ly/2TkKT7I

Nhận xét