Grapevine2:对象生命周期1
发表于:2010-12-12 | 2 个回复

Grapevine2 是在 Grapevine 的基础上升级版本,虽然是升级版,虽然是干的相同的事情,但其实已经完全是不同东西了.不但重写了内核,还重写了OR/M,更重要的是不同的实现思想.目前完成的 Grapevine2 侧重并不在界面,而是在于类的配置方式和管理对象的生命周期上.毕竟对对象生命周期的管理是基础,是重中之重.有了好的基础再加上好的想法何愁没有好的软件呢?

首先介绍的是 Grapevine2 的基本配置方法.Grapevine2 支持 Xml 和 Annotation 两种不同的配置方式,也可以将这两种配置方式组合使用.我比较推荐组合的方式,因为这正是 Grapevine2 的基本思想--快速高效不失可扩展性.下面我们来简单了解一下这几种配置方法.

使用 Annotation 进行配置,Grapevine2 中核心 Annotation:

Resource:注释标记应用程序所需的资源。 此注释可以应用于组件类的字段。如果将该注释应用于一个字段,那么初始化应用程序组件时容器将把所请求资源的一个实例注入其中。即使此注释没有被标记为 Inherited,部署工具仍然需要检查任意组件类的所有超类,以发现这些超类中所有使用此注释的地方.所有此类注释实例都指定了应用程序组件所需的资源.

1使用 Annotation 进行配置:

@Resource
private UserLogicImpl userLogic;

Grapevine2 会生成 UserLogicImpl 实例,并分配给 userLogic.

2使用 Xml + Annotation 进行配置:

<xml version="1.0" encoding="UTF-8"?>

根据以上配置 Grapevine2 将生成 UserLogicImpl 实例.若类的构造方法是有参数的,可以使用 value 属性为其注入参数.程序中,我们使用 Resource 的 id 属性指定 Xml 配置.如下:

@Resource(id="userLogic")
private UserLogic userLogic;

Grapevine2 会 Xml 配置文件中根据指定的 id 进行查询,并生成该类的实例.
很多情况下,系统中会将某种类设计成 Single 的方式,Resource 也提供了单实例对象的支持.使用 isSingle 属性可以将某个类的实例定义为单实例对象.

@Resource(id="userLogic", isSingle=true)
private UserLogic userLogic;

使用 Xml + Annotation 的好处就在于降低配置文件的复杂度,不让业务过多地暴露在程序外部,同时得到 IDE 更好的支持,开发更高效.

评论留言

  1. 这个研究的。。有点看不懂了 = =

  2. 就象看天书。