java - 原型(prototype) spring bean 只给我一个类的实例

标签 java spring spring-boot

我目前正在学习 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()两次后只得到一个实例,创建的对象是构造函数正在打印的文本,应该打印两次。

enter image description here

我在这里错过了什么?谢谢。

最佳答案

您基本上是在初始化 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/

相关文章:

java - Jersey : the resource is not available

javascript - 如何在 Wicket FeedbackPanel 的 info()/error() 方法上调用 Javascript 方法?

java - 如何在 Java 中向 USB 行式打印机发送命令

java - 如何获取Spring-Cloud-Config-Server管理的文件列表

java - 仅包含 Firebase 插件的简单 Cordova 应用程序无法在 Android 上构建或运行

spring - 在这种情况下,异常神秘地逃离 try-catch block 的最可能原因是什么?

java - Spring IoC 的轻量级替代品——可能针对 Android 设备

java - 如何在运行maven项目时消除特定错误

java - 是否可以通过 DB 或 Rest 通过任务列表使 Camunda Webapps(Spring-boot 独立)更新 .bpmn

java - 在 Spring Boot Thymeleaf Controller 返回的 View 中显示字符串