刚刚看完Spring 官方文档的作用域这节,对作用域有了大概的认知。可以理解为bean的生命周期,
即一个bean在什么时候创建,什么时候销毁。
作用域的类型
spring的作用域有6种:
- singleton:单例,在一个容器中只会有一个实例
- prototype:原型,每次请求或每个依赖都会创建一个单独的实例
- request: 每个HTTP 请求都会创建一个实例,相互独立,互不影响
- session: 每个会话都会创建一个实例
- application: 应用全局的实例,和singleton相似了,但是singleton是每个容器中只存在一个,application是servelet
- websocket:应该是在每个socket连接共享一个实例吧
此外 还可以自定义作用域:Spring官方文档:自定义作用域
引发疑问:session作用域对象在一次回话中只会创建一个实例,状态在整个回话中都是共享的,那是不是可以用来存放当前登录的用户信息,在用户登录网站时调用getBean(“loginUser”),将用户信息设置进去,后面的请求中要获取用户信息只需要再次调用getBean(“loginUser”)就能取出当前用户的信息。有这样做的吗?可行吗?