ABCDEFGHIJKLMNOPQRS
1
FeatureGuiceDagger
2
https://code.google.com/p/google-guice/http://square.github.io/dagger/
3
4
Library
5
Version3.x0.9.2
6
Archive Size> 650 KB (+ plug-ins)55KB
7
Further dependenciesfewnone
8
9
API
10
Methods in injector/context20+5
11
12
Concept
13
Container modelflat instancesflat instances
14
Configuration stylestatic + programmatic (annotation + fluent interface)static + annotation (@Provides methods)
15
Wiring styleexplicit (by name and type)explicit (by name and type)
16
Wiring Transparency / Independenceno (annotations required)no (annotations required)
17
"External" code handlingindirect (requires Provider)indirect (requires @Provides method)
18
Coupling stylelooseloose
19
20
Types
21
Generics supportyes (each a literal class!)yes
22
Generic type safetycompile timecompile time
23
Wildcard genericsyes (explicit via literal)no
24
Primitive types handlingprimitive == wrapperprimitive == wrapper
25
Bind to all (generic) supertypesnono
26
Type linksyesyes (requires @Provides method)
27
28
Injection
29
Annotation guidancerequiredrequired
30
Constructor injectionyes (requires annotations)yes (requires annotations)
31
Field injectionidiomatic (annotations)idiomatic (annotations)
32
Setter injectionyes (annotations)no
33
Factory methodsyes (annotations)no
34
Static injectionyes (annotations)yes (annotations)
35
Method interceptionyes (aspects)no
36
Providersidiomatic (annotations)idiomatic (annotations)
37
Reinjectionno (use indirection)no (use indirection)
38
Optional injectionyes (annotations)no
39
Mixed injectionyes (annotations)no
40
Post-construction hookyes (annotations)no
41
42
Modularity
43
Arraysnono
44
Collectionsjava.util (via plug-in, fluent interface)java.util (annotations)
45
Multibindsmanual explicit, loose coupled (fluent interface)manual, explicit, loose coupled (annotations)
46
Sequence of declarationscrucialirrelevant
47
48
Variants
49
Creation techniqueoverrides (Module classes)overrides (Module classes)
50
Perspectivecombinedcombined
51
Compositionnot combinablenot compinable
52
53
Applicability Restrictiveness
54
Prinicplelocal moduleslocal modules
55
Specific package (set)nono
56
Specific classyes (explicit via literal)yes
57
Specific interfacenono
58
Specific parent instancenono
59
60
Scopes
61
Default scopeinjectioninjection
62
Custom scopesadvancedno (use child injectors)
63
Available scopessingleton, injection (request, session via plug-in)singleton, injection
64
65
Performance
66
Bootstrappingstated that it is fastvery fast (compile time code generation)
67
Object creationstated that it is fastvery fast (avoids reflection)
68
69
Error Behavior
70
Dependency cyclesviable (proxies)illegal
71
Detection of a cyclic dependencies error-compile time
72
Scope faultsnot detectednot detected
73
Ambiguous binding errorlazycompile time
74
75
Summing Up
76
Best to use forWeb appsAndroid, Small Codebases, Libraries
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100