Spring MVC RestController-Bereich

8

Ich habe den folgenden Spring Controller:

%Vor%

Jedes Mal, wenn ich auf die REST-API zugreife, wird ein inkrementierter Wert zurückgegeben. Ich lerne gerade Java und frage mich, warum es nicht immer 1 zurückgibt, da jedes Mal, wenn die Anfrage kommt, eine neue Instanz von AtomicLong erstellt werden muss.

    
Babu James 15.10.2015, 07:24
quelle

2 Antworten

9

Nein, die TestController -Bohne ist eigentlich ein Singleton. @RestController Annotation deklariert a Spring @Component , deren Umfang standardmäßig SINGLETON . Dies ist in der @Scope dokumentiert. Anmerkung:

  

Der Standardwert ist eine leere Zeichenfolge (""), die SCOPE_SINGLETON impliziert.

Dies bedeutet, dass es dieselbe Instanz von TestController ist, die alle Anfragen bearbeitet. Da counter eine Instanzvariable ist, ist sie für jede Anfrage gleich.

    
Tunaki 15.10.2015, 07:29
quelle
2

A @RestController wird nicht für jede Anfrage angelegt, sie bleibt für jede Anfrage gleich. So behält Ihr counter seinen Wert und wird jedes Mal erhöht.

    
Gaël J 15.10.2015 07:29
quelle