【Spring】Bean 的作用域

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



🌟 一、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 要注意销毁
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值