Slide 1

Slide 1 text

Getting Started with Dagger 2 Fast dependency injection for Android applications

Slide 2

Slide 2 text

Why dependency injection? Separation of concerns Testability Every app has some kind of dependency injection

Slide 3

Slide 3 text

Uncle Bob “Depend upon Abstractions. Do not depend upon concretions.”

Slide 4

Slide 4 text

A brief history of time JSR-330 Guice Dagger

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Dagger 2 Maintained by Java Core Libraries team at Google Faster than Guice and Dagger Easy to use and to debug Mobile first

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Dagger API @Modules + @Provides @Inject @Component

Slide 9

Slide 9 text

Providing Dependencies

Slide 10

Slide 10 text

Requesting Dependencies @Inject annotations required Constructor, Field & Method

Slide 11

Slide 11 text

Constructor Injection @Inject on a single constructor Parameters are dependencies They can be stored in private and final fields

Slide 12

Slide 12 text

Constructor Injection

Slide 13

Slide 13 text

Constructor Injection It’s useless now

Slide 14

Slide 14 text

Constructor Injection

Slide 15

Slide 15 text

Dependency Graph EpisodeRepository DataModule#provideEpisodeRepository RemoteEpisodeRepository TraktvApi DataModule#provideTraktvApi OmdbApi DataModule#provideOmdbApi Constructor Injection

Slide 16

Slide 16 text

Field Injection @Inject on fields for dependencies Field can not be private or final Inject happens after object is fully instantiated Object is usually responsible for injection

Slide 17

Slide 17 text

Method Injection

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

http://google.github.io/dagger/

Slide 20

Slide 20 text

Components Bridge between modules and injections The injector

Slide 21

Slide 21 text

Components

Slide 22

Slide 22 text

Components this notation is optional

Slide 23

Slide 23 text

Components

Slide 24

Slide 24 text

Components

Slide 25

Slide 25 text

How about some live coding?

Slide 26

Slide 26 text

github.com/google/dagger

Slide 27

Slide 27 text

Questions?

Slide 28

Slide 28 text

Questions? github.com/rodrigohenriques

Slide 29

Slide 29 text

No content