1.2.    Web开发中常用Scope简介

这里主要介绍基于Servlet的Web开发中常用的Scope。

l        第一个比较常用的就是Application级Scope,通常我们会将一些贯穿整个EAR都会用到的常量定义、通用的服务组件、类似DBConnection连接创建等比较消耗资源的组件等等放到这个Scope中去。Application级Scope是与应用程序的ServletContext共存亡的,因此可以理解为所部署应用程序的ServletContext中的“单例Scope”。因此Seam中定义Application级Scope的方法就是前一节介绍的定义“单例”的方法。Spring、Guice框架有着类似的声明方式,在此不再赘述。

l        第二个非常常用的是Session级的Scope,通常我们会将诸如User的认证信息等对象储存在这个区域,它是与客户端(浏览器等)请求所创建的Session共存亡的。利用Seam框架可以做如下定义:

@Name("user")

@Scope(ScopeType.SESSION) // 声明为Session Scope

public class USER { // ……  }

同样Spring、Guice框架有着类似的声明方式,在此不再赘述。

l        如果把所有数据都存放在Session区域,容易增大Server端服务的负荷,并且Session区域是线程不安全的,因为所有客户端的请求都可以访问到Session的数据并修改。因此开发者常常会需要一个以单次发送的请求即HttpRequest为单位的Scope。例如,我们的取款场景中,在一次处理请求中需要对这个存折依赖进行多次操作,比如首先有一个存折的Cheker类要对该存单进行Check,那么这个依赖就不能是每次都被new出来,而是在同一次请求中获取的都应是同一个对象,这就是典型的Request级Scope。

public class DepositBookCheker {

@In  // 此处也要注入存折依赖对象

private DepositBook depositBook;

public void checkDepositBook()
throw DepositBookInvalidException{

check(depositBook);

}

}

以Seam为例定义Request级Scope的存折依赖的方法如下:

@Name("depositBook")

@Scope(ScopeType.EVENT) // 声明为Request级Scope

public class DepositBookICBC
implements DepositBook { // …… 
}

依赖注入及AOP简述(十)——Web开发中常用Scope简介 .的更多相关文章

  1. 依赖注入及AOP简述(一)——“依赖”的概念 .

    一.入门:依赖注入 作为一种全新的设计模式理念,“依赖注入”这个词汇在软件设计开发中已经是越来越耳熟能详了,而各种流行于开源社区的“依赖注入框架”,也越来越多的被当作软件工程开发过程中使用的基础框架. ...

  2. WEB开发中常用的正则表达式

    在计算机科学中,正则表达式用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在WEB开发中,正则表达式通常用来检测.查找替换某些符合规则的字符串,如检测用户输入E-mai格式是否正确,采集符 ...

  3. WEB开发中常用的正则表达式集合

    在计算机科学中,正则表达式用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在WEB开发中,正则表达式通常用来检测.查找替换某些符合规则的字符串,如检测用户输入E-mai格式是否正确,采集符 ...

  4. 依赖注入及AOP简述(十二)——依赖注入对象的行为增强(AOP) .

    四.依赖注入对象的行为增强(AOP) 前面讲到,依赖注入框架的最鲜明的特点就是能够提供受容器管理的依赖对象,并且可以对对象提供行为增强(AOP)功能,所以这一章我们来讨论有关AOP的话题. 1.    ...

  5. 依赖注入及AOP简述(九)——单例和无状态Scope .

    三.依赖注入对象的Scope及其生命周期 在前面的章节我们讲到,依赖注入容器之所以能够区别于以往的ServiceLocator等容器,是在于其不但能够自动构建多层次的.完整的依赖关系图,并且可以管理依 ...

  6. 依赖注入及AOP简述(三)——依赖注入的原理

    3.     “依赖注入”登场 于是诸多优秀的IT工程师开始想出了更加轻量便利.更加具有可测试性和可维护性的设计模式——IoC模式.IoC,即Inversion of Control的缩写,中文里被称 ...

  7. 依赖注入及AOP简述(十三)——AOP应用举例(完结) .

    2.     AOP应用举例 在一般的应用程序开发中,有一些典型的AOP应用,使得开发者可以专注于业务逻辑本身,而不是与之完全无关的一些“方面”. l        首先就是关于前面介绍过的日志输出类 ...

  8. 依赖注入及AOP简述(七)——FQCN请求模式

    2.2.    FQCN请求模式 为了弥补纯字符串请求模式中的类型安全问题,全类名(FQCN)请求模式就应运而生了.其思想便是,在向容器请求依赖对象的时候,不是通过字符串的标识符.而是通过被请求的依赖 ...

  9. 依赖注入及AOP简述(六)——字符串请求模式 .

    2.     依赖注入对象的请求模式 前一节我们讨论了关于声明注入点的几种方法,这一节主要来介绍在注入点上如何定位到所需要的标识符的话题.基本上,我们可以用字符串为标识符来请求依赖对象.或者用全类名( ...

随机推荐

  1. 字符串和数字的全排列问题、前i位被i整除问题

    // 全排列问题.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using names ...

  2. 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑

    Assemble Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3171   Accepted: 1013 Descript ...

  3. SQL查询多行合并成一行

    问题描述:无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数,  所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id    value----- ---- ...

  4. 设置启动页面-Launch Image

    一.添加启动图 二.拖入相应尺寸的图片 图片必须是png格式的.不同机型需要的图片的尺寸: iPhone4.4s-@2x 3.5寸 640*960 iPhone5.5s.5c-@2x 4.0寸 640 ...

  5. node学习 process笔记

    如果你是node大神好了可以关闭此页面了因为接下来游览会白白浪费你许多时间,最近一直学习node.js今晚看到 alsotang 在 github上的node教程 https://github.com ...

  6. Java web 实现 之 Filter分析ip统计网站的访问次数

    统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的. 用什么东西来装载统计的数据.Map<String,Integer& ...

  7. windows本地搭建grunt前端项目构建环境

    初学,目前对grunt的理解和需求仅在于简单的文件合并.压缩.语法检查,其强大功能还有待研究. 安装前环境准备 (1)grunt依赖nodejs运行环境,所以要玩grunt得先把nodejs安装好,n ...

  8. android studio error configuration with name default not found

    Android Studio报错: android studio error configuration with name default not found 在进行sync的时候,提示Error: ...

  9. 如何使用composer?

    /** *@测试环境:我笔记本 本地xampp集成环境 *@操作系统:Windows 7 **/   安装方法:官方有很详细的介绍,这里就不重复造轮子了. 官方链接:http://docs.phpco ...

  10. js分页代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xh ...