springboot prototype设置多例不起作用的解决操作
大多数人会直接这样写:
@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设置多例不起作用的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。
相关文章:
1. Docker究竟是什么 为什么这么流行 它的优点和缺陷有哪些?2. python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例3. docker /var/lib/docker/aufs/mnt 目录清理方法4. python+excel接口自动化获取token并作为请求参数进行传参操作5. Vuex localStorage的具体使用6. 在IDEA中实现同时运行2个相同的java程序7. .Net Core使用Coravel实现任务调度的完整步骤8. python tkinter实现下载进度条及抖音视频去水印原理9. 《CSS3实战》笔记--渐变设计(三)10. Notepad++如何安装Python插件?Notepad++插件怎么装?

网公网安备