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. wpf动画概述

    http://msdn.microsoft.com/zh-cn/library/vstudio/ms752312(v=vs.100).aspx Windows Presentation Foundat ...

  2. c语言的lua库编写

    gcc编译 gcc -I/usr/local/include/ -L/usr/local/lib/ -lm -o engine_mlisten_lua ./src/engine_mlisten_lua ...

  3. Ffplay视频播放流程

    主框架流程 下图是一个使用“gcc+eygpt+graphviz+手工调整”生成的一个ffplay函数基本调用关系图,其中只保留了视频部分,去除了音频处理.字幕处理以及一些细节处理部分. 注:图中的数 ...

  4. 修改MySQL默认最大连接数

    修改MySQL默认最大连接数 MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个: 方法一: 进入MYSQL ...

  5. Web App 图片上传编辑器

    使用cropper.jqueryUpload插件.Jquery.src-dataurl-canvas-blob文件. @{ ViewBag.Title = "更新头像"; Layo ...

  6. Letter of inquiry about employment possibilities, e-mail version

    Subject: (logical to recipient!) Inquiry about software engineering position after completion of M.S ...

  7. const的一些总结

    const的一些总结 采用const符号常量写出来的代码更容易维护,有些函数只读不写: 1 常变量: const 类型说明符 变量名 2 常引用: const 类型说明符 &变量名 3 常成员 ...

  8. mysql数据备份和还原命令

    mysql数据库备份和还原   备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfil ...

  9. php number_format()保留小数点后几位有效数的函数 千位分组来格式化数字(转)

    PHP保留小数点后2位的函数number_format number_format(带小数点的书,小数点后保留的位数) number_format(8.3486,2);  //取得小数点后2位有效数/ ...

  10. 使用委托解决"线程间操作无效: 从不是创建控件“textBox1”的线程访问它" 问题

    在winform编程中常遇到此类问题,造成辅助线程无法给控件赋值 //定义委托 private delegate void SetTextCallback(string text); //在给text ...