2011-03-09 1 views
2

Aloha -Déplacement du code de la dépendance du ressort vers Android

Je migre le code d'une application Web existante vers une application Android. L'application Web existante utilise largement Spring pour l'injection de dépendance.

Je voudrais réutiliser l'injection de dépendance de printemps si je peux, mais je ne vois pas un moyen d'initialiser comme vous le feriez dans une webapp:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:applicationContext.xml</param-value> 
</context-param> 

Google ne se présente pas beaucoup d'aide sur le sujet, autre que d'utiliser Guice. Je préfère ne pas le faire car l'application web est encore en cours de développement, donc si j'utilisais Guice pour les dépendances, je devrais constamment synchroniser les dépendances de Spring et Guice.

Existe-t-il un moyen d'utiliser Spring for DI sur Android de manière plug and play, ou dois-je envisager de réécrire toutes ces choses d'une autre manière?

Merci!

Répondre

1

Avez-vous regardé rouler sur ApplicationContext, en étendant peut-être FileSystemXmlApplicationContext et en remplaçant getResourceByPath(String path) pour extraire vos fichiers de contexte du dossier assets /?

Si vous décidez d'aller dans le sens Guice, RoboGuice est une petite bibliothèque agréable: http://code.google.com/p/roboguice/

+1

Vous devriez probablement étendre AbstractXmlApplicationContext à la place. L'implémentation FileSystemXmlApplicationContext est juste une implémentation getResourceByPath et quelques constructeurs. – flicken

2

Ne pas essayer d'utiliser l'injection de dépendance de printemps dans votre application Android. Android et le printemps ne se mélangent pas de quelque manière que ce soit, forme ou forme. Au lieu de cela, utilisez le modèle de conception d'usine pour générer des objets.

0

S'il vous plaît utiliser l'injection de dépendance de printemps dans votre application Android! :-)

Cependant, vous ne serez pas en mesure d'utiliser le cadre de printemps d'origine, car elle nécessite le java.beans de paquet, ce n'est pas présent sur Android. Si votre configuration Spring existante n'est pas trop extraordinaire, vous serez satisfait de mon port de Spring Framework appelé RoboSpring. De sa description:

RoboSpring est un (vrai) port du Spring Framework à la plate-forme Android. En outre, il offre un support préliminaire pour les fonctionnalités introduites par RoboGuice comme l'injection de références View dans Activités et plus encore. RoboSpring est basé sur la version 3.1.0 de RELEASE de printemps noyau, haricots, contexte et aop composants. Il offre les fonctionnalités suivantes:

  • composants de l'application de configuration avec un fichier de configuration Spring (XML)
  • autowire vos composants Android avec des haricots du contexte d'application Spring.
  • Injectez le contexte de l'application Android dans vos beans Spring. Injecter des vues dans des activités.
  • ... et plus

S'il vous plaît voir ici: https://github.com/dthommes/RoboSpring

RoboSpring - Inversion of Control for Android

Questions connexes