Hallo, ich habe einen kleine Applikation geschriben um die @Scope Annotation zu testen. Leider finde ich den Fehler nicht.
Ich habe 4 Klassen: Main, Service, SingletonBean und PrototypeBean. Ich möchte die 2 Scope funktionen Testen. Meine Erwartung nach sollte die Console 0,1,0,0 ausgeben Da bei einem Singleton immer nur ein Bean erstellt wird und bei einem Prototype immer eine neue Instanz. Die Ausgabe in meiner Console schauen so aus: 1,0,1,0
Könnte mir einer erklären warum?
Main:
Service:
SingletonBean:
PrototypeBean:
Ich habe 4 Klassen: Main, Service, SingletonBean und PrototypeBean. Ich möchte die 2 Scope funktionen Testen. Meine Erwartung nach sollte die Console 0,1,0,0 ausgeben Da bei einem Singleton immer nur ein Bean erstellt wird und bei einem Prototype immer eine neue Instanz. Die Ausgabe in meiner Console schauen so aus: 1,0,1,0
Könnte mir einer erklären warum?
Main:
Java:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
Service:
Code:
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Service {
private final SingletonBean singletonBean;
private final PrototypeBean prototypeBean;
public Service(SingletonBean singletonBean, PrototypeBean prototypeBean) {
this.singletonBean = singletonBean;
this.prototypeBean = prototypeBean;
}
@Autowired
public void testScopes() {
System.out.println(singletonBean.getCounter()); // Ausgabe: 0
System.out.println(singletonBean.getCounter()); // Ausgabe: 1
System.out.println(prototypeBean.getCounter()); // Ausgabe: 0
System.out.println(prototypeBean.getCounter()); // Ausgabe: 0
}
}
SingletonBean:
Code:
package com.example.demo;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("singleton")
public class SingletonBean {
private int counter = 0;
public int getCounter() {
return counter++;
}
}
PrototypeBean:
Code:
package com.example.demo;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class PrototypeBean {
private int counter = 0;
public int getCounter() {
return counter++;
}
}