JdonFramework 6.0发布

09-07-17 banq
使用Jdon框架6.0开发应用将变得异常简单,甚至无需XML配置文件,只需要两步:

第一步:将存在依赖关联关系的两个类用@Service或@Component(两者性质一致)标注:

@Service("helloService")

public class HelloServiceImpl implements HelloService

..

@Component

public class UserRepositoryInMEM implements UserRepository {

第二步:客户端调用代码:

HelloService helloService = (HelloService) WebAppUtil.getService("helloService", req);

String result = helloService.hello(myname);

无需jdonframework.xml配置文件和相关XML配置。DI依赖注射原理图见下:

全部演示代码见JdonFramework源码包目录下examples/testWeb

至此,Jdon框架业务层应用基本全部实现Annotation注解,Annotation做到少而精:

@Poolable 表示当前类的实例是从对象池中获得。

@Stateful 表示当前类的实例是与用户状态相关的。

@Singleton 表示当前类的实例是单例。

如果没有以上注解,缺省当前类的实例相当于new,每次请求一次。

以上几种类的创建模式在性能上,对于代码小的类差别都不大,已经经过测试。响应在70毫秒左右。

@Model 是用来对领域模型进行注解。

下载页面:

http://www.jdon.com/jdonframework/download.html

[该贴被admin于2009-07-20 17:41修改过]


              

2
banq
2009-07-20 16:49

jdonframework 6.0具体变动如下

(一)增加Annotation注射功能, @Service或@Component替代了原来XML配置:

<pojoService name="给自己类取的名称" class="完整类的名称"/>

或者在具体类代码上加入:@Service("给自己类取的名称")

<component name="给自己类取的名称" class="完整类的名称"/>

或者在具体类代码上加入@Component("给自己类取的名称")

Service和Component都表示组件构建概念,可以是一个类,也可以是一个类为主的多个类,如果这个组件供客户端调用,那么就称为服务。两者在Jdon框架中没有区别,只是使用时称呼不同而已。

@Component(“给自己类取的名称”)也可以简化为@Component,这样,Component的名称就是该类的完整类名称(getClass,getName());

@Service则不可以这样,因为是供Jdon框架容器以外的外部客户端调用的,一定要取一个名称。

因为需要被客户端调用,那么就要指定服务的名称,所以,@Service与@Component的区别就是,@Service必须规定一个名称@Service("给自己类取的名称");而@Component则没有name属性,缺省是类名称getClass().getName()名称,如果客户端有时需要临时直接调用@Component标注的组件,也可以按类名称调用。

(二).增加@Singleton Annotation,缺省客户端调用getService时,每次请求获得一个新的Service实例,也可以使用@Poolable对象池来对代码比较大的Service类进行性能提高,现在又提供了另外一种方法,使用单例@Singleton。

单例和对象池区别主要是:对象池可以进行实例最多个数控制,这样,能够保护服务器不会被尖峰冲击造成资源耗尽。

在Service服务代码比较简单小的情况下,Service实例三个创建方式:单例、对象池以及每次请求生成一个新实例,在性能上几乎没有太大差别,已经使用框架源码包中examples目录下的testWeb经过测试了。

(三).没有将有关Action的配置转为Annotation,原来的配置如下继续保留:

<model key="username"

class="com.jdon.jivejdon.model.Account">

<actionForm name="accountForm"/>

<handler>

<service ref="accountService">

<initMethod name="initAccount"/>

<getMethod name="getAccountByName"/>

<createMethod name="createAccount"/>

<updateMethod name="updateAccount"/>

<deleteMethod name="deleteAccount"/>

</service>

</handler>

</model>

因为这个配置是有关MVC表现层,而表现层不是Jdon框架的核心,所以,Jdon框架核心是业务层,对Domain Model和Service服务组件进行管理,所以,不能在业务层耦合具体表现层。上述配置可以认为是表现层和业务层的桥连接配置。

banq
2009-07-21 16:58
相关帖子:

Spring的复杂性

http://www.jdon.com/jivejdon/thread/36618.html

colingo
2009-07-21 21:15
恭喜Jdon6.0发布!!!

banq
2009-07-22 11:24
关于Component和Service定义:

这个定义是从业务领域来定义的。

无论是Evans DDD、NGOSS或者SOA,他们相同定义是:

组件(构件) Component:

1.功能的实现。

2.供第三方使用组合的入口

3.可管理的单元

服务Service:

组件的集合

无论组件和服务,都不是真正将业务功能在自身实现,而是委托,委托给谁?委托给Domain Model领域模型,用NGOSS术语:就是委托给合约Contract,而Contract是用于规定相互调用实体之间信息和功能是如何交互的。

所以,别以为Jdon框架是在屋子里闷头做出来的个人作品(home-grown),而是综合很多业务设计理念Evans DDD NGOSS和SOA基础的。(大白话:当然比纯SOA更厉害了)

SCA更多是一个市场产物:SCA容器没有IOC containers更加直接了当

http://www.jdon.com/jivejdon/thread/36650.html

[该贴被admin于2009-07-29 11:56修改过]

猜你喜欢
3Go 1 2 3 下一页