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设置多例不起作用的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
spring boot开发遇到坑之spring-boot-starter-web配置文件使用教程
本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们知道Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的: 1.首先我们排除spring-boot-starter-web依赖中的Tomcat:在pom文件中排除tomcat的starter <dependency> <groupId>org.springframework.boot</groupId> <
-
Springboot异常错误处理解决方案详解
1.在有模板引擎的情况下: springboot会默认找 templates/error/错误状态码.html,所以我们要定制化错误页面就可以到templates/error下创建一个[对应错误状态码.html]html文件,当发生此状态码的错误springboot就会来到对应的页面. 同时如果我们想让400-499之间的错误都去同一个错误页面,那我们可以在templates/error下创建一个4xx.html.同理500-599的错误可以用5xx.html. 注意:springboot会优先
-
解决SpringBoot2多线程无法注入的问题
1.情况描述 使用springboot2多线程,线程类无法实现自动注入需要的bean,解决思路,通过工具类获取需要的bean 如下 package com.ps.uzkefu.apps.ctilink.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.ps.uzkefu.apps.callcenter.entity.CallRecord; import com.ps.uzkefu.apps.call
-
springboot prototype设置多例不起作用的解决操作
大多数人会直接这样写: @Bean @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public TestBean getTestBean() { return new TestBean(); } ConfigurableBeanFactory.SCOPE_PROTOTYPE的值就是prototype 但是发现Autowire的时候,每一个请求用的还是同一个单例对象,这是因为没设置多例的代理模式的问题,改成如下配置就可以了: @Be
-
ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)
但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero 已经不起作用了.下面是解决办法: 首先在viewDidLoad方法加入以下代码: if(leftTable!.respondsToSelector("setLayoutMargins:")){ leftTable?.layoutMargins=UIEdgeInsetsZero } if(leftTable!.respondsToSelector("setSeparatorInset:&
-
SpringBoot启动访问localhost:8080报错404的解决操作
1.确定本地网络是通的: 2.确定SpringBootq启动后是不报错的 3.查看是不是自己在配置文件中加入了项目路径: 如果加入了项目路径的话,直接访问localhost:8080是不会到欢迎页面的,需要加上项目路径才能访问到欢迎页面,即localhost:8080/sell 补充知识:SpringBoot的web项目启动起来无法访问,访问时还是提示无法访问该网站 有时候可能是因为你的pom中导入了太多的依赖,一些依赖之间可能存在冲突导致项目未完全启动而无法访问显示:无法访问该网站 以上这篇S
-
SpringBoot实现设置全局和局部时间格式化
目录 前言 解决问题 1 全局设置(推荐) 2 局部设置(不推荐) 总结 前言 在开发中,我们进行数据库查询日期类型的时候,往往不是我们想要的时间格式,比如下面的情况: 我数据库里面把这些日期相关的字段都设置为datatime格式了: 数据类型如下: 实体是这么配置的: 那么默认查询出来的结果就是这样的: 救命啊,这什么格式啊,完全不是我想要的年月日时分秒. 其实想解决这种问题也很简单,无非就是时间格式不对吗,下面通过全局设置和局部设置两个方面解决这种问题 解决问题 1 全局设置(推荐) 一般来
-
SpringBoot 中常用注解及各种注解作用
本篇文章将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写 @RestController是@ResponseBody和@Controller的组合注解. @PathVaribale 获取url中的数据 看一个例子,如果我们需要获取Url=localhost:
-
使用layer.msg 时间设置不起作用的解决方法
前几天使用layer.msg设置时间后发现不起作用,这里记录一下. 开始出错误的代码: 后面查看文档后得知调用layer.msg后如果有后续操作需要写在function()中: //eg1 layer.msg('只想弱弱提示'); //eg2 layer.msg('有表情地提示', {icon: 6}); //eg3 layer.msg('关闭后想做些什么', function(){ //do something }); //eg layer.msg('同上', { icon: 1, time:
-
ajax中设置contentType: "application/json"的作用
最近在做项目交互的时候,刚开始向后台传递数据返回 415 ,后来百度添加了 contentType:"application/json" 之后返回400,然后把传输的数据格式改为json字符串就传输成功了,现在我们来看看 contentType:"application/json"的作用: 添加 contentType:"application/json"之后,向后台发送数据的格式必须为json字符串 $.ajax({ type: "p
-
mybatis 使用jdbc.properties文件设置不起作用的解决方法
这样写的时候起作用: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases
-
Springboot如何设置静态资源缓存一年
这篇文章主要介绍了Springboot如何设置静态资源缓存一年,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 由于本人所在项目组,所用的项目是前后端分离的,前端是React 的SPA,每次打包都会新版本的静态文件. 然而,在有些时候,这些静态资源是不变的,故可以将资源缓存至用户本地,提升性能. 写法如下,需要继承WebMvcConfigurerAdapter类,并重写addResourceHandlers方法.就可以告诉浏览器强制缓存 pack
-
SpringBoot首页设置解析(推荐)
首先来解释一下SpringBoot首页设置的三种方式 1.SpringBoot默认首页设置 编写一个最简单的html文件 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <h1>首页</h1> </body> </html&g
随机推荐
- Python 序列的方法总结
- JavaScript中json对象和string对象之间相互转化
- vbs 注册表操作类代码
- java多线程读写文件示例
- iOS中设置圆角的几种方法示例
- PHP输入流php://input实例讲解
- asp实现新评论自动发短信提示的代码
- JS运行耗时操作的延时显示方法
- php实现产品加入购物车功能(1)
- 传递参数的标准方法(jQuery.ajax)
- Python中使用PDB库调试程序
- 删除重复的记录,并保存第一条记录或保存最后一条记录
- Innodb表select查询顺序
- PropertyGrid自定义控件使用详解
- javascript的数据类型、字面量、变量介绍
- 用Python写的图片蜘蛛人代码
- NOT NULL 和NULL
- Android采取ContentObserver方式自动获取验证码
- asp 删除数据并同时删除图片的代码
- OPENCV批量读取图片实现方法