从bug中理解action的作用

来源:互联网 发布:mac入门使用教程 编辑:程序博客网 时间:2024/05/21 18:45

学习spring框架时,总是不能理解action为什么要加上scope=prototype,也就是为什么要多例,单例不行吗?

所以,做项目的时候也没怎么注意,有时候忘记写prototype,对功能也没什么影响。直到遇到两次错误,我才理解多例的重要性。

1. 在进行图片上传时,给出uploadLogo属性接收前台传递过来的数据,第一次上传图片正常保存,第二次没上传图片却保存第一次上传的图片,我当时就想:应该是uploadLogo缓存了上次的记录,只要用完清空就好了,也解决了问题。

private File uploadLogo;  // 上传的文件public void setUploadLogo(File uploadLogo) {this.uploadLogo = uploadLogo;}

2. 用JPA保存实体时,第一次正常保存,第二次报如下错误,一开始以为是主键生成策略的问题,后来加了prototype,问题就解决了。

org.hibernate.PersistentObjectException: detached entity passed to persist

总结,prototype的作用是:每次访问action时,新实例化一个action,也就是说,action里面的值都清空了,不会受到上一个action的影响。

原创粉丝点击