当前位置: 移动技术网 > IT编程>开发语言>Java > springboot prototype设置多例不起作用的解决操作

springboot prototype设置多例不起作用的解决操作

2020年09月04日  | 移动技术网IT编程  | 我要评论
大多数人会直接这样写:@bean@scope(value = configurablebeanfactory.scope_prototype)public testbean gettestbean()

大多数人会直接这样写:

@bean
@scope(value = configurablebeanfactory.scope_prototype)
public testbean gettestbean() {

  return new testbean();
}

configurablebeanfactory.scope_prototype的值就是prototype

但是发现autowire的时候,每一个请求用的还是同一个单例对象,这是因为没设置多例的代理模式的问题,改成如下配置就可以了:

@bean
@scope(value = configurablebeanfactory.scope_prototype, proxymode = scopedproxymode.target_class)
public testbean gettestbean() {
  return new testbean();
}

补充知识:spring注解@scope("prototype")

今天发现一个问题:页面查出来的记录,其它业务对其进行修改以后,再查询发现修改之前的记录仍然还在,后来发现是action没有加@scope("prototype")注解的原因。

spring默认scope是单例模式,这样只会创建一个action对象,每次访问都是同一个action对象,数据不安全。

一个注册的例子,如果没加上这个注解,注册完成后,下一个请求再注册一次,action里会保留上一次注册的信息。

struts2是要求每次访问都对应不同的action,scope="prototype"可以保证当有请求的时候都创建一个action对象。

以上这篇springboot prototype设置多例不起作用的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网