Spring学习笔记3 Spring对IOC的实现_biubiubiu0706的博客-CSDN博客
新建模块
spring-004
引入依赖
org.springframework spring-context 6.0.10 junit junit 4.13.2 test org.apache.logging.log4j log4j-core 2.19.0 org.apache.logging.log4j log4j-slf4j-impl 2.19.0
Spring默认情况下Bean都是单例的(单例:singleton),且在Spring上下文初始化的时候实例化
每次调用 getBean()方法时候,都返回同一个单例对象
如果改成 scope="prototype"
scope有两个属性 1.singleton 2.prototype
默认情况下是singleton(单例的),在容器初始化时候就将bean对象放入容器
prototype:是多例的,初始化容器时候不会创建bean,而是调用getBean方法时候才初始化bean
事实上scope还有其他选项
比如说一次请求一个scope 一次会话一个scope 为什么这里scope只有singleton和prototype两个选项 原因在于没有引入web框架
例如
在pom.xml中引入Springmvc依赖
org.springframework spring-webmvc 6.0.10
再看scope里面的提示: request 和 session 要求项目必须是一个web应用
request:一次请求一个bean
session:一次会话一个bean
事实上scope总共有8个值
还可以自定义scope
举例:自定一个Scope,线程级别的Scope,在同一个线程中,让获取的Bean是同一个.跨线程则不是同一个.
步骤:
1.自定Scope需要实现Scope接口:
spring内置了线程范围的类:org.springframework.context.support.SimpleThreadScope.可以
直接使用
2.将自定义的Scope注册到Spring容器中.
啥意思呢?
配置