咱们较常应用的是 singleton bean 依赖 singleton bean, 那呈现 singleton bean 依赖 prototype bean 的时候应该怎么解决呢?有两种形式:
一,将被依赖的 bean 申明为 prototype,而后通过 ApplicationContext.getBean(xxx) 的形式获取。咱们晓得对于非懒加载单例 bean 会在 spring 启动的时候被创立且只创立一次,其它的都会在显示 getBean() 的时候创立,又因为是 prototype 所以每次创立的 bean 都是新的。
二,通过 lookup-method 或 @LookUp, 应用的形式能够参考 https://blog.csdn.net/qq_3025…
补充两点:
1,如果没非凡指明,创立的 bean 都是 singleton, 像我的项目里的 @Controller/@Service
2,spring 会负责 singleton bean 残缺生命周期 (从创立到销毁); 对于 prototype bean,spring 只负责创立,何时销毁交给使用者定。
参考文章:
Spring lookup-method
spring 中 @Lookup 的作用
Spring 的 replace-method 标签