欢迎来到代码驿站!

当前位置:首页 >

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

时间:2020-09-03 17:00:18|栏目:|点击:

大多数人会直接这样写:

@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对象。

上一篇:Java 实现跨平台的操作方式

栏    目:

下一篇:R语言ggplot2边框背景去除的实现

本文标题:springboot prototype设置多例不起作用的解决操作

本文地址:http://www.codeinn.net/misctech/4489.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有