首页 > 解决方案 > 如何在 Prototype bean 中访问以前创建的 bean?

问题描述

我想创建一个具有我在任何时候给出的唯一名称的 bean。我还想在每次调用它时创建一个具有此唯一名称的新实例。我只想访问在某些情况下创建的具有唯一名称的 bean 的旧实例。如果已经用这个名称创建了一个 bean,我想带上旧的 bean。我发现原型 bean 可以做到这一点。但是每次我调用bean时,它都会创建一个新实例。我找不到旧的bean。

例子 :

public class MyPrototypeBean {

private String dateTimeString = LocalDateTime.now().toString();

public void showMessage(){
    System.out.println("Hi, the time is "+ dateTimeString);
   }
}


@Configuration
public class AppConfig {

@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public MyPrototypeBean prototypeBean() {
    return new MyPrototypeBean();
}

public static void main(String[] args) throws InterruptedException {
    AnnotationConfigApplicationContext context =
            new AnnotationConfigApplicationContext(AppConfig.class);

    MyPrototypeBean bean4 = context.getBean(MyPrototypeBean.class);
    bean4.showMessage();
    Thread.sleep(1000);

    MyPrototypeBean bean5 = context.getBean(MyPrototypeBean.class);
    bean5.showMessage();
    Thread.sleep(1000);

    MyPrototypeBean bean6 = context.getBean(MyPrototypeBean.class);
    bean6.showMessage();
    Thread.sleep(1000);
 }
}

标签: javaspringprototypespring-bean

解决方案


推荐阅读