Ich versuche zu verstehen, was der richtige Gebrauch von Spring wäre. Nicht syntaktisch, sondern zweckmäßig. Wenn Sie Spring verwenden, sollte der Spring-Code dann den gesamten Bean-Instanziierungscode ersetzen? Wann sollte man Spring verwenden oder wann nicht, um eine Bohne zu instantiieren?
Das folgende Codebeispiel kann Ihnen dabei helfen, mein Dilemma zu verstehen:
List<ClassA> caList = new ArrayList<ClassA>();
for (String name : nameList) {
ClassA ca = new ClassA();
ca.setName(name);
caList.add(ca);
}
Wenn ich Spring konfiguriere, sieht es so aus:
List<ClassA> caList = new ArrayList<ClassA>();
for (String name : nameList) {
ClassA ca = (ClassA)SomeContext.getBean(BeanLookupConstants.CLASS_A);
ca.setName(name);
caList.add(ca);
}
Ich persönlich denke, dass die Verwendung von Spring hier einen unnötigen Aufwand bedeutet, weil
- Der Code ist einfacher zu lesen / verstehen.
- Es ist nicht wirklich ein guter Ort für die Abhängigkeitsinjektion, da ich nicht erwarte, dass es eine mehrfache / abwechslungsreiche Implementierung von gibt
ClassA
, die ich zu einem späteren Zeitpunkt durch die Verwendung der Federkonfiguration ersetzen möchte.
Denke ich richtig Wenn nicht, wohin gehe ich falsch?
Wenn es sich um eine Bean handelt , sollten Sie Spring die Erstellung überlassen (außer Sie können eine Factory-Bean bereitstellen - ich habe diese verwendet, um eine bestimmte Unterklasse in Abhängigkeit von einer Systemeigenschaft zurückzugeben - und Sie sollten die Dokumentation zu
@Configuration
und die@Bean
Anmerkungen zu Rate ziehen wenn du das tust). Wenn es sich nicht um eine Bean, sondern nur um ein einfaches altes Java-Objekt handelt, müssen Sie Spring nicht verwenden, um es überhaupt zu erstellen. POJOs sind nützlich, erhalten jedoch keine Abhängigkeitsinjektion, AOP-Wrapper usw., da dies die Dinge sind, die Spring für Sie hinzufügt.Die grundlegende Entscheidung ist, ob es sich wirklich um eine Bean oder nur um ein gewöhnliches Objekt handelt, das zufällig einige Bean-Konventionen befolgt (z. B. die Benennung von Methoden). Ich kann mir nicht vorstellen, was aus dem kleinen Beispiel, das Sie gaben, wirklich der Fall ist.
quelle
Ich könnte falsche Experten sein, bitte korrigieren.
Das gesamte Konzept von Bean in spring besteht darin, dass Spring Container sich um Objekte kümmert. Es ist die Geburt, der Umfang, der Lebenszyklus, der Tod usw. Es ist, als wäre es ein Hausmeister des Objekts. Die Anwendung, die es benötigt, injiziert es.
Überlegen Sie sich daher beim Entscheiden während des Entwurfs Ihres Moduls immer, ob Sie das Spring-Framework berücksichtigen möchten oder ob es sich um ein einfaches Objekt handelt, dessen Lebenszyklus in einer Methode eingeschlossen ist.
Wie bereits erwähnt, sind Dao-Objekte, JMS-Queues, Objekte usw. sehr umfangreich und sollten dem Experten überlassen werden, der das Spring-Framework erstellt, um sich darum zu kümmern.
quelle