Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dagger 2.0 - new dependency injection for Andro...
Search
Radek Piekarz
December 05, 2014
Programming
1
1.8k
Dagger 2.0 - new dependency injection for Android (Droidcon Krakow 2014)
Short introduction to Dagger 2.0 during
Droidcon Kraków
2014.
See more information
here
.
Radek Piekarz
December 05, 2014
Tweet
Share
More Decks by Radek Piekarz
See All by Radek Piekarz
Nearby Notifications – annoy your friends!
radzio
1
59
Deep dive into Android Data Binding
radzio
4
2.4k
How to use MVVM pattern in Android
radzio
1
1.1k
How to use MVVM pattern in Android (Droidcon Krakow 2014)
radzio
14
13k
How to use Apple iBeacons with Android
radzio
1
390
Overview of libraries and tools that make your Android development easier and faster
radzio
1
160
Other Decks in Programming
See All in Programming
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
420
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
280
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
170
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
150
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
Lessons by WebAssembly app in production on CDN Edge Computing Service
tetsuharuohzeki
0
210
XStateでReactに秩序を与えたい
gizm000
0
730
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
530
unique パッケージから学ぶ interning と weak reference @ Asakusa.go#3
karamaru
2
810
Prolog入門
qnighy
4
1k
Securify_エンジニア採用資料
3shake
0
110
A New Era of Testing
mannodermaus
2
520
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
Building Flexible Design Systems
yeseniaperezcruz
325
38k
Side Projects
sachag
451
42k
What's in a price? How to price your products and services
michaelherold
242
11k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.8k
Building an army of robots
kneath
302
42k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
41
6.5k
Art, The Web, and Tiny UX
lynnandtonic
294
20k
Optimising Largest Contentful Paint
csswizardry
31
2.8k
Fireside Chat
paigeccino
31
2.9k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
Transcript
Dagger 2.0 New dependency injection for Android Radosław Piekarz
Spring • Popular in the Java community • Polularized DI/IoC
• XML configuration
Guice / RoboGuice • Used new features in Java 1.5
• No XML configuration • Not so easy to debug • Runtime validation
None
None
Dagger 1 • Compile time validation • Do more work
during compile and less in runtime • Faster than Guice/RoboGuice
Dagger 1 • Not proguard safe • Runtime graph composition
Source: Jake Wharton
Minimal graph creation time - not just fast, but hand-written
DI fast
Full, static inspection of code paths
No reflection, no explicit classloading
Dagger 2 API • @Module & @Provides - mechanism for
providing dependencies • @Inject - mechanism for requesting dependencies • @Component bridge between modules and injections
Example module @Module class PumpModule { @Provides Pump providePump(Thermosiphon pump)
{ return pump; } }
@Inject class CoffeeMaker { private final Lazy<Heater> heater; private final
Pump pump; @Inject CoffeeMaker(Lazy<Heater> heater, Pump pump) { this.heater = heater; this.pump = pump; }
@Component @Component(modules = {DripCoffeeModule.class}) public interface Coffee { CoffeeMaker maker();
}
Example app public class CoffeeApp { public static void main(String[]
args) { Coffee coffee = Dagger_Coffee.builder() .build(); coffee.maker().brew(); } }
Dagger 1 vs Dagger 2 public class CoffeeApp implements Runnable
{ @Inject CoffeeMaker coffeeMaker; @Override public void run() { coffeeMaker.brew(); } public static void main(String[] args) { ObjectGraph objectGraph = ObjectGraph.create(new DripCoffeeModule()); CoffeeApp coffeeApp = objectGraph.get(CoffeeApp.class); coffeeApp.run(); } }
None
Quick demos
u2020 & u2021 https://github.com/Jak eWharton/u2020 https://github.com/cgr uber/u2020/tree/dagg er2
Dagger 2 Pros • It is really fast • Compile
time validation for entire graph • Easy debugging Cons • Not flexible • There is no dynamism
https://github.com/google/dagger/ https://google.github.io/dagger/
Q&A Thank you for your attention! radzio RadoslawPiekarz { }