Skip to content

Commit 4ffb1fd

Browse files
committed
Review square libs article.
1 parent ec9c42b commit 4ffb1fd

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

_posts/2012-11-29-square-libs.markdown

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ Nous allons donc voir quelque unes de ces librairies illustrées dans une petite
1919

2020
## [Dagger](http://square.github.com/dagger/) : l'injection de dépendance
2121

22-
Dagger se veut comme un successeur de Guice dont le créateur [Bob Lee](https://twitter.com/crazybob) est justement le CTO de Square. Il a voulu créer un framework d'injection de dépendances rapide et moderne qui fonctionne aussi bien en java "classique" que sur Android avec sa JVM Dalvik adapté au mobile.
22+
Dagger se veut être le successeur de Guice dont le créateur [Bob Lee](https://twitter.com/crazybob) est justement le CTO de Square. Il a voulu créer un framework d'injection de dépendances rapide et moderne qui fonctionne aussi bien en java "classique" que sur Android avec sa JVM Dalvik adapté au mobile.
2323

24-
A l'instar d'[AndroidAnnotations](http://androidannotations.org/), Dagger s'appuie sur la génération de code à la compilation (JSR 269 : Annotation Processing). Pour chaque classe gérée par Dagger, une classe est créee contenant toute la logique d'injection en se basant sur le graph d'objets. C'est cette classe qui s'occupera d'invoquer les constructeurs et injecter les variables annotées en @Inject (JSR 330).
24+
A l'instar d'[AndroidAnnotations](http://androidannotations.org/), Dagger s'appuie sur la génération de code à la compilation (JSR 269 : Annotation Processing). Pour chaque classe gérée par Dagger, une classe est créée contenant toute la logique d'injection en se basant sur le graph d'objets. C'est cette classe qui s'occupera d'invoquer les constructeurs et d'injecter les variables annotées en @Inject (JSR 330).
2525

2626
Dagger se passe donc de tout usage de réflexion contrairement à Guice (et sa version pour Android : RoboGuice). Et ceci est une bonne chose pour nos applications Android car le principal défaut de Guice était bien le temps de construire le graph au démarrage de l'application.
2727

28-
Place à l'illustration de la librairie par un peu de code :
28+
Place à l'illustration de la librairie par un peu de code pour Android :
2929

3030
### Les principes
3131

@@ -89,7 +89,7 @@ Pour éviter d'appeler l'ObjectGraph pour injecter mes activités dans le onCrea
8989
{% highlight java %}
9090
// Parent of all activities
9191
public abstract class DaggerActivity extends Activity {
92-
92+
9393
protected void onCreate(android.os.Bundle savedInstanceState) {
9494
super.onCreate(savedInstanceState);
9595
DaggerModule.getObjectGraph().inject(this);
@@ -105,7 +105,7 @@ Le module de mon application s'occupe de fournir les instances via des @Provides
105105
public class DaggerModule {
106106

107107
private static ObjectGraph graph;
108-
108+
109109
@Provides
110110
@Singleton
111111
public MyService provideUserService() {
@@ -129,7 +129,7 @@ public class DaggerModule {
129129
}
130130
{% endhighlight %}
131131

132-
J'ai réalisé une petit application de test disponible sur Github : [squarelibs-android-demo](https://github.com/johanpoirier/squarelibs-android-demo). Au lancement de l'application, c'est immédiat, pas de temps de création du graph décelable par l'utilisateur.
132+
J'ai réalisé une petite application de test disponible sur Github : [squarelibs-android-demo](https://github.com/johanpoirier/squarelibs-android-demo). Au lancement de l'application, c'est immédiat, pas de temps de création du graph décelable par l'utilisateur.
133133

134134

135135
## [Otto](http://square.github.com/otto/) : le bus d'évènements
@@ -140,7 +140,7 @@ Otto est un bus d'évènements permettant de découpler les différentes parties
140140

141141
Il est extrêmement simple.
142142

143-
Pour publier un évènement, il faut poster un évènement sur le bus :
143+
Pour publier un évènement, il suffit de poster un évènement sur le bus :
144144

145145
{% highlight java %}
146146
// AwesomeEvent could be anything
@@ -262,14 +262,14 @@ public class WifiInfoReceiver extends DaggerBroadcastReceiver {
262262

263263
@Inject
264264
protected Bus bus;
265-
265+
266266
@Override
267267
public void onReceive(Context context, Intent intent) {
268268
super.onReceive(context, intent);
269269
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
270270

271271
DaggerModule.getObjectGraph().inject(this);
272-
272+
273273
// scan results available : post event to the bus to display on the main activity
274274
if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
275275
scanResults = wifiManager.getScanResults();
@@ -356,11 +356,11 @@ public class DaggerModule {
356356
}
357357
{% endhighlight %}
358358

359-
Nous utilisons Gson comme librairie de sérialisation/désérialisation et le client HTTP par défaut d'Android. A ce propos, Square propose une autre librairie nommée [OkHttp](https://github.com/square/okhttp) qui est un client HTTP+SPDY pour Android. OkHttp permet de pouvoir compter sur le même client http sur toutes les versions d'Android et ne pas dépendre de la version de celui-ci. Il faudrait le tester et surtout attendre une version plus finalisée.
359+
Nous utilisons Gson comme librairie de sérialisation/désérialisation et le client HTTP par défaut d'Android. A ce propos, Square propose une autre librairie nommée [OkHttp](https://github.com/square/okhttp) qui est un client HTTP+SPDY pour Android. OkHttp permet de pouvoir compter sur le même client HTTP sur toutes les versions d'Android et ne pas dépendre de la version de celui-ci. Il faudrait le tester et surtout attendre une version plus finalisée.
360360

361361

362362
## Conclusion
363363

364-
Dagger, Otto et Retrofit sont de petites librairies, encore jeunes mais très prometteuses. Elles sont parfaitement adpatées à un contexte d'utilisation mobile car elles ont été pensé pour. Elles fonctionnent parfaitement ensemble mais si vous ne devez en retenir qu'une, je vous conseille Otto qui est un merveilleux petit outil pour découpler les composants de votre application Android.
364+
Dagger, Otto et Retrofit sont de petites librairies, encore jeunes mais très prometteuses. Elles sont parfaitement adpatées à un contexte d'utilisation mobile car elles ont été pensées pour. Elles fonctionnent parfaitement ensemble mais si vous ne devez en retenir qu'une, je vous conseille Otto qui est un merveilleux petit outil pour découpler les composants de votre application Android.
365365

366366
Pour rappel, ces 3 librairies sont illustrées dans une application Android sur Github : [squarelibs-android-demo](https://github.com/johanpoirier/squarelibs-android-demo). Dans le même registre, [Pierre-Yves Ricau](https://github.com/pyricau) a fourni un exemple d'intégration de Dagger, Otto et AndroidAnnotations sur Github : [CleanAndroidCode](https://github.com/pyricau/CleanAndroidCode).

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy