我目前正在学习 Spring Boot。在代码中,我已经用原型(prototype) bean 编写了作用域注释。
@Component
@Scope(value = "prototype")
public class ninja {
// constructor
public ninja() {
System.out.println("object created");
}
}
我希望它能让我在调用 getBean 函数时创建多个对象。
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
// creating first instance
ninja obj = SpringApplication.run(DemoApplication.class, args).getBean(ninja.class);
// creating second instance
ninja obj1 = SpringApplication.run(DemoApplication.class, args).getBean(ninja.class);
}
}
但是我调用getBean()两次后只得到一个实例,创建的对象是构造函数正在打印的文本,应该打印两次。
我在这里错过了什么?谢谢。
最佳答案
您基本上是在初始化 spring 应用程序两次。因此,您每次都会得到一个不同的应用程序上下文。像下面这样更改它并查看输出:
ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
Ninja obj = getBean(Ninja.class);
Ninja obj1 = getBean(Ninja.class);
注意:我已经根据 Java 命名约定更改了名称,我建议您遵循相同的名称。
关于java - 原型(prototype) spring bean 只给我一个类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58066095/