Scope作用域以及涉及的问题

简介: Singleton(单例式):在整个应用中,只创建bean的一个实例。

Bean的作用域


  1. Singleton(单例式):在整个应用中,只创建bean的一个实例。


  1. Prototype(原型式):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。


  1. Session(会话式):在Web应用中,为每个会话创建一个bean实例。(eg:电子商务应用中,一个bean代表一个用户的购物车,只要同一个session一个bean)。


  1. Request(请求式):在Web应用中,为每个请求创建一个bean实例。


Session和Request注入Singleton中问题


@Component  
    @Scope{  
 Value=WebApplicationContext.SCOPE_SISSION,
         proxyMode=ScopeProxyMode.INTERFACES}
    Public ShoppingCart  cart(){
    }  
@Component  
public class StoreService{  
    @Autowired 
    public void setShoppingCart(ShoppingCart shoppingCart){
        this.shoppingCart=shoppingCart;
    }
}
复制代码


分析


注解方式:通过使用@Scope当中的proxyMode方式进行代理处理,


  • 实现了接口的类


@Scope(value = WebApplicationContext.SCOPE_SESSION,
  proxyMode = ScopedProxyMode.INTERFACES)
复制代码


  • 具体的类可以使用CGLib来为其生成一个代理


@Scope(value = WebApplicationContext.SCOPE_SESSION,
  proxyMode = ScopedProxyMode.TARGET_CLASS)
复制代码


可能出现的exception:Scope ‘session’ is not active for the current thread错误


目录
相关文章
|
8月前
|
JavaScript 前端开发
避免将变量和函数暴露给全局作用域可能导致的命名冲突和代码可维护性
保护变量和函数不暴露于全局作用域可防止命名冲突,提升代码可维护性。
|
8月前
|
自然语言处理 JavaScript 前端开发
作用域的概念及作用?作用域的分类?.js 属于哪种作用域?
作用域的概念及作用?作用域的分类?.js 属于哪种作用域?
75 0
|
8月前
|
Java Spring 容器
深入Spring原理-4.Aware接口、初始化和销毁执行顺序、Scope域
深入Spring原理-4.Aware接口、初始化和销毁执行顺序、Scope域
151 0
|
2月前
|
存储 安全 编译器
【c++】深入理解别名机制--引用
本文介绍了C++中的引用概念及其定义、特性、实用性和与指针的区别。引用是C++中的一种别名机制,通过引用可以实现类似于指针的功能,但更安全、简洁。文章详细解释了引用的定义方式、引用传参和返回值的应用场景,以及常引用的使用方法。最后,对比了引用和指针的异同,强调了引用在编程中的重要性和优势。
44 1
|
7月前
|
JavaScript 前端开发
scope=“scope“和作用域插槽
scope=“scope“和作用域插槽
54 0
|
5月前
|
JavaScript 前端开发
理解全局作用域
【8月更文挑战第25天】
35 0
|
7月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包是函数访问外部作用域变量的能力体现,它用于封装私有变量、持久化状态、避免全局污染和处理异步操作。
【6月更文挑战第25天】JavaScript闭包是函数访问外部作用域变量的能力体现,它用于封装私有变量、持久化状态、避免全局污染和处理异步操作。闭包基于作用域链和垃圾回收机制,允许函数记住其定义时的环境。例如,`createCounter`函数返回的内部函数能访问并更新`count`,每次调用`counter()`计数器递增,展示了闭包维持状态的特性。
57 5
|
8月前
|
JavaScript 前端开发
js开发:请解释什么是作用域(scope),并说明全局作用域、局部作用域和块级作用域的区别。
JavaScript中的作用域规定了变量和函数的可见性与生命周期。全局作用域适用于整个脚本,变量可通过全局对象访问,可能导致命名冲突和内存占用。局部作用域限于函数内部,每次调用创建新作用域,执行完毕后销毁。ES6引入的块级作用域通过`let`和`const`实现,变量仅在其代码块内有效,并有暂时性死区。作用域机制有助于代码组织和变量管理。
58 1
|
Java Spring
案例06 Bean的作用域案例
分别使用singleton和prototype作用域创建Bean实例,比较singleton和prototype作用域的区别。
51 0
|
JavaScript 前端开发 开发者