Registrierung einer Instanz, die als 'singleton' - bean die beim Start der Anwendung
Ich bin Herumspielen mit Spring-Boot und ich bin versucht, erstellen Sie eine Instanz der ServiceImpl
gelöst werden, wenn ein Service
erforderlich ist. Derzeit bin ich Anmerkungen zu der Umsetzung als @Component
aber das gibt mir nicht die chance zu konstruieren, die Instanz, wie ich will.
Den ServiceImpl
sollte konstruiert werden, mit einem String, der einen Pfad zu einer Datei auf der Festplatte. Ich möchte diese in der main-Methode der @SpringBootApplication
Klasse der Anwendung.
Vielleicht ist es nur mir kommt aus einer langen .NET-hintergrund, wo wir in der Regel setup der IoC-container wie:
Service service = new Service("C:\\data.bin");
container.RegisterSingleton<IService>(service); //now whoever asks for a IService will receive this precise instance
Kann es Sinn machen, im Frühling die Welt?
LE: ich bin mir wohl bewusst das GoF-singleton-definition (D. H. verhindern, dass alle anderen aus dem erstellen von Instanzen der Klasse) - ich bin nicht auf dieser.
Ich glaube nicht, es zu speichern in den Eigenschaften, das ist ein guter Vorschlag! In der Tat können Sie diesen fördern, um eine Antwort 🙂
InformationsquelleAutor Andrei Rînea | 2016-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie beschrieben in den Kommentar, diese kann getan werden, indem Sie Ihre Standortinformationen auf einer Konfigurationsdatei, und dann Spritzen Sie auf Spring-Bean-Initialisierung.
Vorausgesetzt, Ihr
application.properties
sieht wie folgt aus:Unten ich bin demo-ing 4 Möglichkeiten zu tun, die Erreichung dieses:
1.Durch die Injektion von Ihrem Grundstück direkt auf die Bean-Methode-Erstellung:
2.Durch die Injektion der Eigenschaft auf ein Config-Breite Variablen und verwenden Sie die in Ihrem Bean-Methode-Erstellung:
3.Durch die Injektion wird die gesamte Umgebung in die Config und dann von hand Holen die Eigenschaft benötigt:
4.Dies ist eine Spring-Boot-exklusiven Art und Weise. Sie können Type-safe Konfiguration Eigenschaften Anmerkungen mit
@ConfigurationProperties
direkt Ihren bean Definition eines Präfix-Namensraum und alle params von diesem Zeitpunkt an werden automatisch zugeordnet, um die Eigenschaften definiert, die Bohne!Unter dem Gesamt-ein-Datei-code in einem Stück:
Vielen Dank - ich habe Hinzugefügt, link zur Dokumentation wo finden Sie alle details über Sie.
InformationsquelleAutor dimitrisli
In der gleichen Datei, die Sie haben
@SpringBootApplication
tun:Frühling sollte autowire alles für Sie. Es sollte ein singleton standardmäßig (http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes).
Edit 1: außerdem sollten Sie Anmerkungen in Ihren Service-Implementierung mit @Service anstelle des @ - Komponente (siehe: Was ist der Unterschied zwischen @Component, @Repository & @Service Anmerkungen im Frühjahr?).
Edit 2: Sie müssen auch nicht unbedingt auf die
@Bean
Methode in der Klasse, hat@SpringBootApplication
. Sie können es in jeder Klasse, die die@Configuration
annotation.InformationsquelleAutor Jonathan Sterling