admin管理员组文章数量:1438821
Spring中Bean的作用域和生命周期
bean 的六种作用域
Bean 的作用域是指 Bean 在 Spring 框架中的某种行为模式,比如单例作用域,在spring中只有一份是全局共享的
作用域 | 说明 |
---|---|
singleton | 每个SpringIoC容器内同名称的bean只有一个实例(单例)(默认) |
prototype | 每次使用该bean时会创建新的实例(非单例) |
request | 每个HTTP 请求⽣命周期内, 创建新的实例(web环境中, 了解) |
websocket | 每个WebSocket⽣命周期内, 创建新的实例(web环境中, 了解) |
session | 每个HTTP Session⽣命周期内, 创建新的实例(web环境中, 了解) |
application | 每个ServletContext⽣命周期内, 创建新的实例(web环境中, 了解) |
下面通过看每个对象的地址来查看,Dog对象的某种行为模式
单例作用域:
代码语言:javascript代码运行次数:0运行复制每个SpringIoC容器内同名称的bean只有一个实例
@Autowired
ApplicationContext context;
@Resource(name = "singleDog")
Dog singleDog;
@RequestMapping("/singleton")
public String singleton(){
Dog contextDog = context.getBean("singleDog",Dog.class);
return "contextDog: " + contextDog + " resources: " + singleDog;
}
prototype:原型作用域
代码语言:javascript代码运行次数:0运行复制** 每次使用该bean时会创建新的实例**
@Bean
@Scope("prototype")
public Dog prototypeDog(){
return new Dog();
}
//从spring上下文获取
@RequestMapping("/prototy")
public String prototy(){
Dog contextDog = context.getBean("prototypeDog",Dog.class);
return "contextDog: " + contextDog + " resources: " + singleDog;
}
request:请求作用域:
代码语言:javascript代码运行次数:0运行复制每个HTTP 请求生命周期内, 创建新的实例
@Bean
@RequestScope
public Dog requestDog(){
return new Dog();
}
//从spring上下文获取
@RequestMapping("/request")
public String request(){
Dog contextDog = context.getBean("requestDog", Dog.class);
return "contextDog:"+ contextDog + ", resources:" +requestDog;
}
#
session:会话作用域:
代码语言:javascript代码运行次数:0运行复制每个HTTP Session⽣命周期内, 创建新的实例
@Bean
@SessionScope
public Dog sessionDog(){
return new Dog();
}
//从spring上下文获取
@RequestMapping("/session")
public String session(){
Dog contextDog = context.getBean("sessionDog", Dog.class);
return "contextDog:"+ contextDog + ", resources:" +sessionDog;
}
Application: 全局作用域 :
代码语言:javascript代码运行次数:0运行复制每个ServletContext生命周期内, 创建新的实例(web环境中, 了解)
//原对象
@Bean
@ApplicationScope
public Dog applicationDog(){
return new Dog();
}
//从spring上下文获取
@RequestMapping("/application")
public String application(){
Dog contextDog = context.getBean("applicationDog", Dog.class);
return "contextDog:"+ contextDog + ", resources:" +applicationDog;
}
Bean的生命周期
生命周期指的是⼀个对象从诞生到销毁的整个生命过程, 我们把这个过程就叫做⼀个对象的生命周期,bean对象生命周期可以分为5个部分
实例化
就是为Bean分配内存空间
属性赋值:
通过bean注入和装配的方式, 如@AutoWired,@resource
初始化:
执行各种通知,在AutowireCapableBeanFactory接口中有定义AbstractAutowireCapableBeanFactory和AbstractBeanFactory方法中实现
使用bean
销毁bean
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-20,如有侵权请联系 cloudcommunity@tencent 删除对象生命周期作用域spring容器销毁容器的各种⽅法, 如 @PreDestroy , DisposableBean 接口⽅法, destroymethod.
本文标签: Spring中Bean的作用域和生命周期
版权声明:本文标题:Spring中Bean的作用域和生命周期 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747599847a2726714.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论