🎈博客主页:🌈
我的主页
🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 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 | 这个表示在项目的整个生命周期中,只有一个 Bean | web 环境下生效 |
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 要注意销毁
版权声明:本文为m0_46635265原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。