Dagger 2 - là 1 trong những dependency injection framework. Nó được áp dụng để genaration code trải qua những base anotation, code được genartion ra rất giản đơn đọc với debug

Chuẩn bị
Trước Lúc bắt đầu bạn muốn chúng ta khám phá qua về SOLID principles sẽ là phần đông nguyên lý thiết kế và viết code. Sau đó ở đây bản thân đang chỉ nhấn mạnh vấn đề nguyên tắc cuối cùng SOLID kia chính là Dependency Inversion:
Dependency inversion principle
1. Các module V.I.P tránh việc dựa vào vào những modules cấp thấp. Cả 2 nên phụ thuộc vào vào abstraction.2. Interface (abstraction) không nên nhờ vào vào chi tiết, mà trái ngược. ( Các class giao tiếp với nhau thông qua interface, không hẳn trải qua implementation.)Với bí quyết code thông thường, các module cấp cao vẫn Điện thoại tư vấn các module cấp thấp. Module cấp cao đang dựa vào cùng module thấp cấp, điều đó tạo thành các dependency. lúc module cấp thấp chuyển đổi, module V.I.P buộc phải biến đổi theo. Một đổi khác vẫn kéo theo hàng loạt chuyển đổi, sút tài năng bảo trì của code.Chính bởi vậy nêú theo đúng Dependendy Inversion principle, những module thuộc dựa vào vào 1 interface ko đổi. Ta rất có thể tiện lợi sửa chữa thay thế, sửa thay đổi module thấp cấp mà không ảnh hưởng gì tới module cao cấp.
Bạn đang xem: Tìm hiểu dagger 2 trong android
Định nghĩa với có mang DITrong thời điểm này, các thiết kế viên tốt lộn lạo giữa những quan niệm Dependency Inversion, Inversion of Control (IoC), Dependency Injection (DI). Ba quan niệm này tương tự nhau nhưng không trọn vẹn giống như nhau.
Xem thêm: Free Download Kmspico 10
cũng có thể phát âm Dependency Injection một cách đơn giản và dễ dàng nhỏng sau:
Các module ko tiếp xúc thẳng cùng nhau, mà lại thông qua interface. Module cấp thấp vẫn implement interface, module V.I.P vẫn điện thoại tư vấn module cấp thấp thông qua interface.Ví dụ: Để tiếp xúc với database, ta gồm interface IDatabase, các module thấp cấp là XMLDatabase, SQLDatabase.Module V.I.P là CustomerBusiness vẫn chỉ sử dụng interface IDatabase.Việc khởi sinh sản các module cấp thấp vẫn vày DI Container triển khai. Ví dụ: Trong module CustomerBusiness, ta sẽ không khởi chế tạo IDatabase db = new XMLDatabase(), việc này đang bởi DI Container tiến hành. Module CustomerBusiness sẽ không biết được những điều gì về module XMLDatabase tốt SQLDatabase.Việc Module nào gắn thêm cùng với interface nào sẽ tiến hành config vào code hoặc vào file XML.DI được sử dụng để gia công giảm sự dựa vào thân những module, dễ dãi rộng vào việc biến đổi module, bảo trì code và testing.
Dependency Injection with Dagger 2
Dagger 2 là gì ?Là một dependency injector, khác với những dependency injector giành riêng cho việc tiến hành vận dụng Enterprise nhỏng Spring IoC xuất xắc JavaEE CDI. Dagger Được kiến thiết cho các thứ low-over, nhỏ gọn dẫu vậy vẫn đầy đủ thiên tài.Hầu hết những dependency injector áp dụng reflection nhằm tạo ra và inject những module. Reflection nkhô nóng với tương thích cho các version Android cũ nhưng mà reflection gây ra khó khăn rất lớn trong Việc debug tuyệt tracking Khi chạm mặt lỗi.Txuất xắc bởi vấn đề sử dụng reflection Dagger thực hiện một trình biên dịch trước (pre-compiler), trình biên nhờn này tạo ra tất cả các lớp, các module quan trọng để triển khai việc.Dagger không nhiều mạnh khỏe đối với những dependency injector khác cơ mà núm vào kia Dagger lại nhẹ nhàng cùng thuận tiện sử dụng cũng giống như gần như bỏ đi được điểm yếu của dependency injector là kĩ năng tracking bugDagger 2 thực hiện hầu hết các anotation sau :Định nghĩa dependency providers (object providers)
Trong Dagger 2 class gồm anotation
Module tất cả trách nát nhiệm hỗ trợ những object rất có thể được inject.Các class như thế có thể quan niệm các thủ tục với anotated
Provides. Các đối tượng trả về trường đoản cú các cách thức này còn có sẵn dependency nhằm inject.Định nghĩa dependency (object consumers) Quý khách hàng hoàn toàn có thể sử dụng
Inject với constructor,Dagger 2 rất có thể sử dụng 1 instance này để hoàn thành dependencies.Điều này được tiến hành nhằm tránh Việc define nhiều cách tiến hành
Component được áp dụng trong 1 interface.Interface này được sử dụng do Dagger2 nhằm generate code, kết nối thân module cùng đối tượng người tiêu dùng diễn tả sự phụ thuộc. Sau đây là bảng tổng quan liêu cách sử dụnganotate trong dagger :Table 1. Annotation summary of Dagger 2
Component | Used on an interface. This interface is used by Dagger 2 to generate code which uses the modules khổng lồ fulfill the requested dependencies. Xem thêm: Dark Là Gì - Dark Meme Hay Dảk Là Gì |
Note: Dagger không auto inject những fields. Nó cũng quan trọng inject những private fields, giả dụ bạn có nhu cầu áp dụng inject field, các bạn sẽ define 1 method trong
Component interface trong các số đó đem instance mà lại bạn có nhu cầu inject làm cho tsi mê số.
Kết luận
Qua nội dung bài viết này hi vọng tất cả những chúng ta có thể hình dung qua tứ tưởng về Dependency injection,nhằm tự kia tất cả tầm nhìn mang đến Dagger 2, thanh lịch bài tiếp theo bản thân vẫn triển không giống quá trình để inject dagger vào 1 project nhỏ dại apk. Ở nội dung bài viết này mình đã cố gắng tìm hiểu thêm từ nhiều nguồn nhưng mà lượng kiến thức có hạn mong muốn nhận thấy sự góp sức của các bạn.Cảm ơn phần đông bạn !