2016-04-21 5 views
4

Im Spring Framework scheint es beans are the preferred way of creating objects in der Geschäftslogik zu verwenden.Rolle des neuen Schlüsselworts in Spring Framework

[Dependency Injektions] ist ein Verfahren, bei den Objekten, die Abhängigkeiten definieren, das heißt, die anderen Objekte mit denen sie arbeiten, nur durch Konstruktorargumente, Argumente an eine Fabrikmethode, oder Eigenschaften, die nach dem Einschalten der Objektinstanz eingestellt werden es wird konstruiert oder von einer Fabrikmethode zurückgegeben. Der Container fügt diese Abhängigkeiten beim Erstellen der Bean ein. Dieser Prozess ist grundlegend umgekehrt, daher der Name Inversion of Control (IoC), der Bean selbst, der die Instanziierung oder Lokalisierung seiner Abhängigkeiten durch direkte Konstruktion von Klassen oder einen Mechanismus wie das Service Locator-Muster steuert.

Also von meinem einfachen Verständnis ist der Unterschied etwas wie folgt aus:

// Plain ol' Java 
Foo f = new Foo(); 

// Using beans in Spring Framework 
Foo f = FooFactory.get(); 

Ist es eine zu starke Vereinfachung zu sagen, dass in der Regel in Methoden außerhalb von @Configuration Klassen und @Bean Definitionen sollten Entwickler nur Objekte mit Bohnen bekommen? Soll in dem Fall, in dem ich ein neues Objekt möchte, eine Prototyp-Bean anstelle des Schlüsselworts new direkt injiziert werden?

Ein Beispiel für einen Code, in dem ich nicht sicher bin, ob ich Spring-Konventionen befolge, ist unten gezeigt.

// Construct a new object that will be created in the database 
RecordDto record = new RecordDto(); 

// Or should I be using some bean factory? 
RecordDto record = RecordDtoFactory.get(); 
+0

_ "(...) es scheint, als ob Beans die bevorzugte Methode zum Erstellen von Objekten zur Verwendung in der Geschäftslogik sind" _ - Zitat erforderlich. – kryger

+0

@kryger Ich habe dem ersten Absatz im Abschnitt "Einführung in den Spring IoC-Container und Beans" der Spring Framework-Dokumentation eine Referenz hinzugefügt. –

+0

Ja, aber Ihre Frage ist über * Business/Domain-Objekte * was es nicht, worüber die Spring Docs sprechen. Ich habe persönlich noch nie ein Projekt gesehen, das Domänenobjekte auf diese Weise erstellt und verwaltet, deshalb finde ich die * "bevorzugte Art Objekte zu erstellen" * nur eine Meinung. – kryger

Antwort

1

Bitte lesen Sie this Article von geliebten Martin Fowler. Ich denke, dass die IOC-Konzepte nützlich ist, wenn eine Komponente in Ihrer Anwendung eine Abhängigkeit zu anderen Komponenten für einige Funktionalität zu vervollständigen hat. IoC-Container werden für die Verwaltung der Erstellung und des Lebenszyklus von Softwarekomponenten verantwortlich sein und diese auch in abhängige Komponenten einbringen, anstatt manuell auf diese Komponenteninstanzen zuzugreifen.

Wenn beispielsweise ein Dienst eine Instanz von DAO benötigt, wird es vom Container abgerufen, anstatt es zu erstellen.

Aber im Falle von DTO werden sie nur die Daten halten, und das ist keine echte Abhängigkeit. Also ich denke, mit "neue" ist in diesem Fall besser.

Verwandte Themen