Inversion of control là gì

      15

Với những chúng ta với tiếp cận các bước developer và chưa có nhiều kinh nghiệm trong lĩnh vực này chắc hẳn đang khôn xiết hoang đem về khái niệm Inversion of Control (IoC). Để nắm rõ thuật ngữ IoC là gì với cách vận dụng nó cùng với Spring, bạn hãy xem thêm ngay nội dung bài viết sau đây để có được các thông tin chi tiết nhất. 

IoC là gì?

IoC còn mang tên gọi vừa đủ là Inversion of Control, được hiểu là 1 nguyên lý thiết kế ứng dụng trong technology phần mềm. Kiến trúc ứng dụng khi vận dụng nguyên lý kiến tạo này sẽ hòn đảo ngược quyền tinh chỉnh so với giao diện lập trình phía thủ tục. Giả dụ như vào lập trình phía thủ tục, các đoạn mã được chế tạo sẽ gọi những thư viện thì sinh sống IoC lại hoàn toàn khác. Phần lớn IoC container sẽ chích gần như dependencies lúc khởi chế tạo bean.

Bạn đang xem: Inversion of control là gì

*

IoC là gì?

Đây là quan niệm rất trừu tượng, không phải người nào cũng có thể đọc được khi new tiếp cận và cách để bạn gọi được nó chính là trau dồi thêm kinh nghiệm cho phiên bản thân mình. 

Một số thuật ngữ tương quan khác

Spring IoC Container là gì?

Spring IoC Container được chịu trách nhiệm bởi Interface org.springframework.context.ApplicationContext. Đồng thời, phụ nhiệm vụ vụ thông số kỹ thuật – configuration, thiết lập – installation cùng tập thích hợp – assembling toàn cục object beans mang đến Spring IoC Container.

Spring đem lại 2 tùy lựa chọn implementation mang đến ApplicationContext interface là:

FileSystemXmlApplicationContext và ClassPathXmlApplicationContext áp dụng cho ứng dụng độc lậpWebApplicationContext sử dụng cho các ứng dụng web

Dependency Injection- DI là gì?

Đây là một trong pattern dùng để implement IoC, các dependencies sẽ tiến hành inject vào module trong quá trình khởi tạo. 

*

Dependency Injection – DI

Cách chế tạo ra 1 dependency object trong truyền thống lâu đời như sau:

public class TraditionalStore

private cửa nhà item;

public TraditionalStore()

item = new ItemImplOne();

Khi sử dụng cách thức DI, chúng ta cũng có thể viết lại bọn chúng như sau:

public class DIStore

private thành tích item;

public DIStore(Item item)

this.item = item;

Constructor Dependency Injection

Trong đây, Spring container sẽ call 1 constructor cùng phần đông arguments thay mặt đại diện cho những dependencies. Chẳng hạn như ở cấu hình dưới đây:


Bean: dùng để định nghĩa 1 bean trên từng method

Một ví dụ không giống về thông số kỹ thuật bean khi thực hiện XML configuration như sau:

Field Dependency Injection 

Bạn rất có thể sử dụng biện pháp khác để có thể tạo 1 bean cho áp dụng đó là thêm
Autowired

private thành tích item;

}

Trong quá trình khởi tạo nên AutowiredStore, trong trường hợp không có method hoặc constructor nào nhằm inject thành quả bean, thì Spring sẽ áp dụng reflection để inject chiến thắng vào trong.

Đây là cách khởi tạo 1 bean cực kì dễ dàng, mặc dù nó lại tồn tại một trong những vấn đề nên cách thức này không được khuyến khích thực hiện nhiều. 

Lazy Initialized Bean

Ở chính sách mặc định, khi startup application, Spring container sẽ auto khởi chế tạo và cấu hình toàn cỗ Singleton beans. Nếu như khách hàng không đam mê điều này, cơ mà chỉ mong khởi chế tạo bean khi bao gồm request, thì có thể sử dụng lazy-init attribute như sau:

Autowiring Dependencies

Autowiring chất nhận được container tự động giải quyết những dependencies giữa các beans trải qua việc kiểm tra các bean đã được định nghĩa. Bao gồm 4 một số loại để autowiring một bean như sau:

*

Autowiring dependencies trong spring 

No: là quý hiếm mặc định, nó không sử dụng autowiring mang đến bean mà chúng ta phải chứng thực tên của những dependencies.

Xem thêm: "Tính Minh Bạch Tiếng Anh Là Gì ? Tính Minh Bạch Tiếng Anh Là Gì

byName: Autowiring được thực hiện nhờ vào tên của nằm trong tính. Spring container vẫn làm trách nhiệm tìm kiếm 1 bean có sẵn vào name sao cho có name trùng với name của thuộc tính.byType: Autowiring thực hiện phụ thuộc vào kiểu trực thuộc tính, Spring container vẫn tìm tìm 1 bean cùng một số loại với nằm trong tính đó. Trong trường hợp có tương đối nhiều hơn 1 bean cùng loại, spring sẽ lập tức throw 1 exception.constructor: Autowiring dựa vào constructor arguments meaning. Spring container sẽ tìm tìm beans tất cả loại tương tự với loại của constructor arguments.

Sử dụng
Qualifier(“itemTwo”)

private sản phẩm item;

}

Sau đó, inject bean thành công vào tác phẩm property của storeOne bean bằng phương pháp sau:

Trên đấy là chia về Inversion of Control – IoC là gì và một số thuật ngữ tương quan khác. Nếu như bạn mới ra trường, mới đi làm việc mà vẫn còn đấy cảm thấy hoang đưa về những quan niệm này thì cũng chớ quá lo ngại nhé. Bởi đó đều là phần đa thuật ngữ mà lại không phải người nào cũng có thể hiểu cấp tốc chóng. Bạn cần có nhiều thời gian để tiếp cận và nghiên cứu và phân tích thì mới rất có thể hiểu hết được về chúng.