SpringBoot中如何正确设置Prototype模式实现多实例?

2026-05-21 12:381阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计362个文字,预计阅读时间需要2分钟。

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) 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设置多例不起作用的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

SpringBoot中如何正确设置Prototype模式实现多实例?

本文共计362个文字,预计阅读时间需要2分钟。

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) 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设置多例不起作用的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

SpringBoot中如何正确设置Prototype模式实现多实例?