spring,springboot中依赖注入(@Autowire)多例模式不生效的问题

对于mvc应用,spring虽然提供了bean的多例,也就是加入

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

例如,我们需要实现控制层每访问一次service层都获取一个实例,而不是同一个实例。但实际上,在启动服务后,使用@Autowire只注入了一个实例,img

解决办法如下

1.使用多例模式代理(推荐)

@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS)

2.使用ObjectFactory(手动)

​ 熟悉ioc的对ObjectFactory都不陌生,它通过泛型,可以直接获取该种类型的bean

@Autowire
ObjectFactory<T> factory
//使用
factory.getObject()

3.使用传统ioc(不推荐,虽然和第二种相似,但感觉这样,自动注入失去了意义,强迫症勿用)

@Autowired
private BeanFactory beanFactory;

Object object = beanFactory.getBean(Object.class);

版权声明:本文为weixin_45885574原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。