spring5 @Scope("prototype") 失效原因
单例里面注入多例失效,是因为单例就初始化一次,所以每次获取的多例对象都是同一个
解决办法
思想:推迟获取bean即可
1.@Lazy
@Autowired
@Lazy
private IpUtils ipUtils;
2.增加proxyMode
@Scope(value = "prototype",proxyMode= ScopedProxyMode.TARGET_CLASS)
@Component
3.从ApplicationContext 拿
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/getIP")
public String getIP(ServerHttpRequest request){
return applicationContext.getBean(IpUtils.class).getIP(request);
}
4.用objectFactory间接获得
@Autowired
private ObjectFactory<IpUtils> ipUtils;
建议
推荐用第三种,自己手动从spring容器拿