当前位置:首页 > 编程笔记 > 正文
已解决

【Spring】Bean 的作用域

来自网友在路上 147847提问 提问时间:2023-09-25 00:42:03阅读次数: 47

最佳答案 问答题库478位专家为你答疑解惑

🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页


目录

  • 🌟 一、XML 配置
  • 🌟 二、Java 配置
  • 🌟 三、singleton 和 prototype 的区别


🌟 一、XML 配置

默认情况下,我们注册到 Spring 容器中的 Bean 是单例的,多次获取,拿到的是同一个实例

如果是 XML 配置,可以通过如下方式修改 scope 属性:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.dong.Cat" id="cat" scope="prototype"/>
</beans>

主要就是修改 scope 属性的值。
scope 属性的取值,一共有六种

取值含义生效条件singleton表示这个 Bean 是单例的,在 Spring 容器中,只会存在一个实例prototype多例模式,每次从 Spring 容器中获取 Bean 的时候,才会创建 Bean 的实例出来request当有一个新的请求到达的时候,会创建一个 Bean 的实例处理web 环境下生效session当有一个新的会话的时候,会创建一个 Bean 的实例出来web 环境下生效application这个表示在项目的整个生命周期中,只有一个 Beanweb 环境下生效gloablsession有点类似于 application,但是这个是在 portlet 环境下使用的

🌟 二、Java 配置

Java 配置可以通过 @Scope 注解去设置作用域

public class JavaConfig {@Bean@Scope("prototype")Cat cat(){Cat cat = new Cat();return cat;}
}

🌟 三、singleton 和 prototype 的区别

  • 如果 scope 为 singleton,则 Spring 容器在启动的时候,就会完成 Bean 的初始化;而 prototype 则是在每一次获取 Bean 的时候,Spring 容器才会去初始化 Bean
  • 在具体的项目中使用的时候,要注意 scope 为 prototype 的 Bean 要注意销毁
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【Spring】Bean 的作用域":http://eshow365.cn/6-13106-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!