在spring中将singleton注入原型

在spring中将singleton注入原型,spring,dependency-injection,inversion-of-control,Spring,Dependency Injection,Inversion Of Control,将单例注入原型bean的类加载行为是什么 我尝试过用其他方法在singleton中注入原型,并使用查找方法解决问题。这取决于您是否使用BeanFactory。BeanFactory可以延迟加载类 无豆工厂 如果从Spring上下文的开始到结束,Singleton和Prototype的具体实现是已知的,那么至少在调用上下文的start方法时加载它们。java中类的默认类初始化由使用的类加载器完成 也就是说,在豆子可以自动编织之前 实现接口,并扩展初始化的类 静态类作用域被称为 静态字段已初始化并设

将单例注入原型bean的类加载行为是什么


我尝试过用其他方法在singleton中注入原型,并使用查找方法解决问题。

这取决于您是否使用BeanFactory。BeanFactory可以延迟加载类

无豆工厂 如果从Spring上下文的开始到结束,Singleton和Prototype的具体实现是已知的,那么至少在调用上下文的start方法时加载它们。java中类的默认类初始化由使用的类加载器完成

也就是说,在豆子可以自动编织之前

  • 实现接口,并扩展初始化的类
  • 静态类作用域被称为
  • 静态字段已初始化并设置
  • 之后,上下文开始使用
    start
    -方法

  • 调用单例的默认构造函数
  • 调用{}作用域
  • 已设置所有@Autowired字段
  • 如果Singleton扩展SmartSingletonInitializer,将调用其继承的方法
  • 调用@PostConstruct方法
  • 然后,如果需要原型Bean(通过
    context.getBean
    或直接
    @Autowired
    ),则原型的

  • 调用单例的默认构造函数
  • 调用{}作用域
  • 已设置所有@Autowired字段
  • 如果原型扩展SmartSingletonInitializer,则调用其继承的方法
  • 调用@PostConstruct方法
  • 原型实例被注入
  • 有豆工厂 它的行为可能有所不同,因为原型bean可以返回尚未从相应的类加载器加载的bean的实例。如果是这样,则原型bean按以下时间顺序加载:

  • 实现接口,并扩展初始化的类
  • 静态类作用域被称为
  • 静态字段已初始化并设置
  • 调用单例的默认构造函数
  • 调用{}作用域
  • 已设置所有@Autowired字段
  • 如果原型扩展SmartSingletonInitializer,则调用其继承的方法
  • 调用@PostConstruct方法
  • 原型实例被注入

  • 我的问题是调用getBean multiple将创建多少个实例times@AvinashJethy如果调用getBean,则始终会创建原型bean。getBean永远不会创建单例bean。