我想创建一个具有随时提供的唯一名称的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);
}
}