依赖注入及AOP简述(十)——Web开发中常用Scope简介 .

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 { // …… 
}

时间: 2024-11-15 12:32:53

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

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

一.入门:依赖注入 作为一种全新的设计模式理念,“依赖注入”这个词汇在软件设计开发中已经是越来越耳熟能详了,而各种流行于开源社区的“依赖注入框架”,也越来越多的被当作软件工程开发过程中使用的基础框架.这一章我们主要介绍什么是依赖注入.它的来源是什么.以及能给我们带来什么样的好处. 1.     “依赖”的概念 要了解依赖注入,我们首先需要了解什么是“依赖”.从现实世界的观点来看,“依赖”即某个实体对象为了完成某项功能,必须要依托另外一些实体对象,那么这些被依托的实体对象即被称为“依赖”(Depe

web开发中常用的js

将自己在web开发中经常用到的一些JS总结一下. 1.修改标签和表单的值 修改标签的值: var customer = document.getElementById("custm" ).innerHTML; alert(customer); document.getElementById( "custm").innerHTML = "name" 修改控件(input)的值: var userName = document.getElementB

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

在计算机科学中,正则表达式用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在WEB开发中,正则表达式通常用来检测.查找替换某些符合规则的字符串,如检测用户输入E-mai格式是否正确,采集符合规则的页面内容等等.今天我将分别用PHP和Javascript向大家介绍WEB开发中最常用最实用的正则表达式及其用法,正则表达式是一门学科,不可能使用一篇文章来讲解完,理论的东西网上很多,有兴趣的同学可以搜一大把.不过你也许没必要去埋头学习琢磨不透的正则表达式,看本文和实例给您呈现常用.实用的正则

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

四.依赖注入对象的行为增强(AOP) 前面讲到,依赖注入框架的最鲜明的特点就是能够提供受容器管理的依赖对象,并且可以对对象提供行为增强(AOP)功能,所以这一章我们来讨论有关AOP的话题. 1.     对依赖对象进行行为增强 所谓AOP,就是Aspect Oriented Programming(面向方面的编程),核心思想是把一个“方面”独立出来,从而实现组件间的松耦合.也许有些晦涩难懂,所以我们还是看个简单的例子. 在我们的银行依赖中,假设有个需求,即在每一笔取款业务的前后都要输出日志信息.

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

三.依赖注入对象的Scope及其生命周期 在前面的章节我们讲到,依赖注入容器之所以能够区别于以往的ServiceLocator等容器,是在于其不但能够自动构建多层次的.完整的依赖关系图,并且可以管理依赖对象的Scope和对其进行行为增强.有关行为增强的话题我们会在下一章介绍,这里我们先来看看有关依赖对象的Scope及其生命周期管理的话题. 1.     依赖注入对象的Scope Scope,即作用域,是指面向对象开发中所设计的某一类对象的生存期间.我们先从普通Java程序开发中最常用的单例和无状

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

3.     “依赖注入”登场 于是诸多优秀的IT工程师开始想出了更加轻量便利.更加具有可测试性和可维护性的设计模式——IoC模式.IoC,即Inversion of Control的缩写,中文里被称作“控制反转”.至于为什么会有这么一个看似古怪的名字,我们稍后会做解释.2004年著名软件工程学者和工程师Martin Fowler在其论文<Inversion ofControl Containers and the Dependency Injection pattern>中将IoC更名为De

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

2.     AOP应用举例 在一般的应用程序开发中,有一些典型的AOP应用,使得开发者可以专注于业务逻辑本身,而不是与之完全无关的一些“方面”. l        首先就是关于前面介绍过的日志输出类的功能,当然前面的例子非常简单,实际上要输出的日志信息中往往有很多的可变参数,这时就需要从被拦截对象的上下文中取出相应的信息进行行为的增强. l        最常用的AOP应用就是关于DB事务的管理了.业务处理成功则向DB提交事务,反之则回滚事务——这是每一个开发者都会写过的代码.但是实际上这种事

依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .

3.2.    “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模式则是其反向的,即被动地等待别人做好一个依赖对象提供给我. 在美国好莱坞众多电影工厂在寻找演员的时候通常奉行着这么一个原则:不要找我,需要的时候我去找你(“Don’tcall us; we’ll call you!”),把相同的思路运用到我们的软件工程里通常也被称作“好莱坞原则”(Hollywood

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

2.2.    FQCN请求模式 为了弥补纯字符串请求模式中的类型安全问题,全类名(FQCN)请求模式就应运而生了.其思想便是,在向容器请求依赖对象的时候,不是通过字符串的标识符.而是通过被请求的依赖的全类名来定位依赖.这样如果开发者误将全类名标识符写错的话,在编译时立即会提醒“类不存在”.并且,如果使用Eclipse等IDE开发工具的话,用其提供的自动完整代码的功能就会轻松地将依赖的全类名标识符定义到代码中. 在第一章的“3.3 依赖注入框架简介”一节中我们提到了Google Guice框架是