IOC CONTAINER LÀ GÌ

     
1. IoC là gì?

IoC(Inversion of Control): Đảo ngược điều khiển, nó giúp làm biến đổi luồng điều khiển của lịch trình một giải pháp linh hoạt.

Bạn đang xem: Ioc container là gì

Thường cần sử dụng với Denpendency Injection.

Các chúng ta có thể xem lại bài xích về Dependency Injection để hiểu rõ hơn: https://stackjava.com/design-pattern/dependency-injection-di-la-gi.html

2. Spring IoC

IoC Container là thành phần tiến hành IoC.

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

Spring container sử dụng DI để làm chủ các thành phần, đối tượng để làm cho 1 ứng dụng. Những thành phần, đối tượng người dùng này điện thoại tư vấn là Spring Bean (mình sẽ nói về Spring Bean trong các bài sau)

Để sinh sản đối tượng, cấu hình, thêm rắp chúng, Spring Container sẽ đọc thông tin từ những file xml và thực hiện chúng.

*

IoC Container trong Spring có 2 mẫu mã là:

BeanFactoryApplicationContext

Sự khác biệt giữa BeanFactory cùng ApplicationContext:

BeanFactory với ApplicationContext gần như là những interface tiến hành IoC Container. ApplicationContext được gây ra BeanFactory tuy nhiên nó gồm thêm một số tác dụng mở rộng lớn như tích phù hợp với Spring AOP, cách xử lý message, context cho web application.

Xem thêm: Bills Là Gì Trong Tiếng Việt? Nghĩa Của Từ Bill, Từ Bill Là Gì

3. Lấy ví dụ với BeanFactory và ApplicationContext.

3.1 BeanFactory

Để sử dụng Spring Bean ta buộc phải khai báo tủ sách spring-bean sau:

org.springframework spring-beans 4.3.13.RELEASEClass HelloWorld.java

public class HelloWorld private String message; public void setMessage(String message) this.message = message; public void getMessage() System.out.println("Print : " + message); Để tạo đối tượng HelloWorld thông qua IoC container ta sẽ thông số kỹ thuật nó trong tệp tin beans.xml

hiện nay ta sẽ tạo một BeanFactory để đọc các thông tin cấu hình và sản xuất ra đối tượng người dùng HelloWorl.

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

// tạo factoryDefaultListableBeanFactory factory = new DefaultListableBeanFactory();// đọc tin tức file cấu hình và gán vào factoryXmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);reader.loadBeanDefinitions(new ClassPathResource("beans.xml"));//tạo đối tượng người dùng từ factoryHelloWorld obj = (HelloWorld) factory.getBean("helloWorld");obj.getMessage();Kết quả:

Print : Hello World!

3.2 Application Context

Để thực hiện Spring Bean ta cần khai báo thư viện spring-context sau:

org.springframework spring-context 4.3.13.RELEASEMình đã tạo đối tượng phức tạp hơn HelloWorl.java một chút.

Ví dụ class DataResource.java đựng thông tin kết nối tới database.

Xem thêm: Ý Nghĩa Của Biến Dị Tổ Hợp Là Gì ? Nguyên Nhân Của Biến Dị Tổ Hợp

public class DataResource private String driverClassName; private String url; private String username; private String password; public String getDriverClassName() return driverClassName; public void setDriverClassName(String driverClassName) this.driverClassName = driverClassName; public String getUrl() return url; public void setUrl(String url) this.url = url; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; public void printConnection() System.out.println("url: " + this.url + " " + "username/password: " + this.username + "/" + this.password); Để tạo đối tượng người dù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 thông số kỹ thuật cho chiếc gì)

tạo nên một đối tượng ApplicationContext để đưa thông tin từ file thông số kỹ thuật và tạo đối tượng người tiêu dùng DataResource

public static void main(String<> args) ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); DataResource obj = (DataResource) context.getBean("dataResource"); obj.printConnection();Kết quả:

url: jdbc:mysql://localhost/database_nameusername/password: root/admin1234Done!

Bây giờ bạn có nhu cầu thay đổi messge trong đối tượng người sử dụng HelloWorld, giỏi database của bạn thay đổi username/password hay các bạn đổi kết nối sang database khác bạn chỉ cần đổi lại tin tức trong tệp tin config .xml là đã chuyển đổi được luồng chạy của chương trình, đó đó là IoC.