博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring所创建的bean的作用域
阅读量:6609 次
发布时间:2019-06-24

本文共 1104 字,大约阅读时间需要 3 分钟。

hot3.png

    spring 模式上的作用域有两种

    singleton :一个 Spring容器 中只存在公用一个实例。

    prototype : 在spring容器中,每次都产生一个新的实例。

    值得注意的是,我上面所提到的 “spring容器” 这个单位,每个配置文件都相当于是一个spring容器,在不同的spring容器中即使是 singleton 也是会产生多个实例,但是一个容器中始终都是只有一个实例(实例的是singleton 作用域的情况下)。

    控制作用的方法有两种

package controller;import org.springframework.context.annotation.Scope;import service.UserSerivce;/** * 第二种方法 使用 @Scope 注解,使用 prototype 参数声明这个类的作用域的范围是 prototype * 默认情况下是 singleton 的  */@Scope("prototype")public class UserController {		public UserSerivce userService;	public void setUserService(UserSerivce userService) {		this.userService = userService;	}	}

如何选择Bean的作用域

    如果一个bean不会保持任何回话状态(也就是说,他是无状态的),那么应该将他的作用于定义为singleton 。例如我们的controller,service,dao本质上都是无状态的。如果这个有会话状态的话,应该设置成 prototype 作用域,例如我们在使用 struts2 框架式的 action类,使用对象接受前端传递的值,保留有会话信息,应该将其设置成 prototype  作用域。

    上面是将的 spring 中所提出的,作用域,在我们的 web 服务器中一样有作用域,而我们的 spring 框架一样可以管理。

    request : 一次请求作用域

    session:一次会话作用域

    application :一个服务器作用域

     global session: global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。

    上述所说的,作用域也相当于是 一个实例的生命周期。

转载于:https://my.oschina.net/u/3744526/blog/1976228

你可能感兴趣的文章
Kubernetes+Prometheus+Grafana部署笔记
查看>>
我的友情链接
查看>>
寻找志同道合的朋友!
查看>>
linux磁盘管理基本命令
查看>>
实现自己的.NET Core配置Provider之Yaml
查看>>
实现拖拽ImageView
查看>>
我的友情链接
查看>>
Working with Constraints in Interface Builder
查看>>
saltsatck-grains
查看>>
HTTP服务器搭建
查看>>
Samba服务是基于企业级的文件共享和打印共享
查看>>
运维人员需要有产品观
查看>>
HTML
查看>>
素数测试算法(基于Miller-Rabin的MC算法) // Fermat素数测试法
查看>>
linux下svn回滚操作
查看>>
maven-profile
查看>>
C 读文件 Windows 与 Linux 的差别
查看>>
【转】左手坐标系和右手坐标系
查看>>
mac 制作 ios 的 usb 启动盘
查看>>
bind的介绍,安装及应用
查看>>