🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
一个Singleton的Bean中Autowired了一个prototype的Bean,每次调用SingletonBean.doSomething()时打印的对象是不是同一个呢? ~~~java @Service public class SingletonBean{ @Autowired private PrototypeBean prototypeBean; public void doSomething(){ System.out.println(prototypeBean.toString()); } } @Component @Scope(value="prototype") public class PrototypeBean{ } ~~~ 因为Singleton是单例的,所以在项目启动时就会初始化,prototypeBean本质上只是它的一个Property,那么ApplicationContex中只存在一个SingletonBean和一个初始化SingletonBean时创建的一个prototype类型的PrototypeBean。 那么每次调用SingletonBean.doSomething()时,Spring会从ApplicationContex中获取SingletonBean,每次获取的SingletonBean是同一个,所以即便PrototypeBean是prototype的,但PrototypeBean仍然是同一个。每次打印出来的内存地址肯定是同一个