Question

Je l'ai utilisé printemps avant (et comme ça), mais je pensais que jeter un oeil à Guice .

Est-il possible d'initialiser quelque chose comme des cartes ou des listes dans les haricots en utilisant Guice?

Par exemple, je l'ai fait ce qui suit avant au printemps pour injecter une liste des articles que je veux traiter dans certains haricots.

<property name="FilesToProcess">
   <list>
      <value>file1.xml</value>
      <value>file2.xml</value>
   </list>
</property>

Comment puis-je faire en Guice?

Était-ce utile?

La solution

Guice2 a MultiBindings et MapBindings, qui devrait travailler pour vous.

https://github.com/google/guice/wiki/Multibindings

Mise à jour:

Après avoir examiné ce nouveau, il semble que vous demandez peut-être comment vous pouvez injecter des valeurs d'exécution dans Guice, peut-être des objets arbitraires.

Guice est très concentré autour de faire tout comme typesafe code, il ne se prête pas naturellement à cela. Ce que je l'ai fait pour contribuer à Guice est de créer un schéma XML et utiliser JAXB pour aspirer et injecter cela dans les objets résultants.

Il existe une méthode Names.bindProperties pour lier les propriétés régulières anciennes en Guice constantes.

Il y a aussi un certain niveau d'intégration avec le printemps, vous voudrez peut-être regarder cela comme bien.

Autres conseils

Guice vous permet d'injecter littéraux de type. La syntaxe est un peu étrange. Il y a une entrée de blog qui explique pourquoi.

La liaison ressemblerait à quelque chose comme ceci:

public class SampleModule extends AbstractModule {
    protected void configure() {
        bind(new TypeLiteral<List<String>>() {}).
                annotatedWith(Names.named("FilesToProcess")).
                toInstance(Arrays.asList("file1.xml", "file2.xml"));
    }
}

Et puis votre code d'application pourrait injecter la liste par nom comme celui-ci:

public class SampleClass {
    private final List<String> files;

    @Inject
    public SampleClass(@Named("FilesToProcess") List<String> files) {
        this.files = files;
    }
}

Je suis d'accord avec Dave Stenglein pour les valeurs d'exécution.

Il y a des cadres comme oBIX qui sont spécialisés dans la configuration. J'aime Guice pour injection de code , mais ils sont meilleurs pour que injection de configuration .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top