Frage

Ich habe Frühling verwendet vor (und wie es), aber dachte ich bei Guice .

Gibt es eine Möglichkeit etwas wie Karten oder Listen in Bohnen zu initialisieren mit Guice?

Zum Beispiel, ich habe folgende vor im Frühjahr getan, um eine Liste der Dinge, die ich in eine Bohne verarbeiten will zu injizieren.

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

Wie kann ich dies tun in Guice?

War es hilfreich?

Lösung

Guice2 hat MultiBindings und MapBindings, die für Sie arbeiten sollte.

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

Aktualisiert:

Nach erneuten Blick auf diese, es scheint, dass Sie gefragt werden, wie Sie Laufzeitwerte in Guice injizieren können, vielleicht als beliebige Objekte.

Guice ist sehr konzentriert um alles als typsichere Code zu tun, so dass er sich nicht selbst verleihen natürlich dazu. Was ich getan habe Eingang Guice zu schaffen ist ein XML-Schema zu erstellen und verwenden jaxb diese in saugen und die daraus resultierenden Objekte zu injizieren.

Es gibt ein Names.bindProperties Verfahren zum Binden reguläre Altbau in Guice Konstanten.

Es gibt auch ein gewisses Maß an Integration mit Spring, so können Sie das sehen wollen, wie gut.

Andere Tipps

Guice können Sie Typ Literale injizieren. Die Syntax ist ein wenig seltsam. Es gibt einen Blogeintrag , die erklärt, warum.

Die Bindung würde wie folgt aussehen:

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

Und dann Anwendungscode könnte die Liste mit Namen wie diese injiziert:

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

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

ich mit Dave Stenglein für Laufzeitwerte stimmen.

Es gibt Frameworks wie oBIX , die in der Konfiguration spezialisiert sind. Ich mag Guice für Code-Injektion , aber sie sind besser für die Konfiguration Injektion .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top