论坛首页 Java企业应用论坛

Yan Container beta 1 发布

浏览 36115 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-04-08  
没那么麻烦,下面是我对你的要求的直接机械翻译,

java.util.List list7 = new java.util.ArrayList();;
list7.add(...);
...//this populate the list7 with values from 1 to 7.
Component beana = Components.bean(Class.forName("com.javaeye.BeanA"););
.withProperty("beanC", Components.useKey("beanC"););
.withProperty("list", Components.value(list7););
.withProperty("name", Components.value("ajoo hao!"););
.withProperty("beanB", Components.useKey("beanB");;


线程安全我是考虑了的。用了些synchronized。不过多线程不那么容易测试,所以也不知道是否有bug。
0 请登录后投票
   发表时间:2005-04-08  
ajoo 写道
没那么麻烦,下面是我对你的要求的直接机械翻译,

java.util.List list7 = new java.util.ArrayList();;
list7.add(...);
...//this populate the list7 with values from 1 to 7.
Component beana = Components.bean("com.javaeye.BeanA");
.withProperty("beanC", Components.useKey("beanC"););
.withProperty("list", Components.value(list7););
.withProperty("name", "ajoo hao!");
.withProperty("beanB", Components.useKey("beanB");;


线程安全我是考虑了的。用了些synchronized。不过多线程不那么容易测试,所以也不知道是否有bug。


真的? 嘿嘿,真实不好意思,怪我没看懂你的设计。 这样一来的话,倒是很不错哦。 
0 请登录后投票
   发表时间:2005-04-08  
引用
我胡思乱想了一下,组装组件似乎可以分为这么两种
1)全局组装+局部组装结合
2)智能式自动组装
3)支持运行时线程安全组装

我个人认为以上4种方式

佩服啊佩服!
0 请登录后投票
   发表时间:2005-04-08  
ajoo 写道
引用
我胡思乱想了一下,组装组件似乎可以分为这么两种
1)全局组装+局部组装结合
2)智能式自动组装
3)支持运行时线程安全组装

我个人认为以上4种方式

佩服啊佩服!



        头脑混乱,夜深了,睡觉了!
0 请登录后投票
   发表时间:2005-04-08  
1.
引用
读取到beanB和BeanC时类似,值得注意的是,当最后读取配置文件完毕,应用中需要获取BeanA的实例时,Yan容器必须能够对BeanA,BeanB,BeanC之间的依赖性进行解析和有顺序的组装。

这个yan做得到吧。
2.局部组装和全局组装由yan实现,也应该事件容易的事情,但目前YanContainer的接口Dependency getDependency()还没看到作用范围这种概念,感觉有用性也是0。
3.线程这个太难了吧,是否new Abc(),容器就自动组装好了?
0 请登录后投票
   发表时间:2005-04-08  
nihongye 写道
1.
引用
读取到beanB和BeanC时类似,值得注意的是,当最后读取配置文件完毕,应用中需要获取BeanA的实例时,Yan容器必须能够对BeanA,BeanB,BeanC之间的依赖性进行解析和有顺序的组装。

这个yan做得到吧。
2.局部组装和全局组装由yan实现,也应该事件容易的事情,但目前YanContainer的接口Dependency getDependency()还没看到作用范围这种概念,感觉有用性也是0。
3.线程这个太难了吧,是否new Abc(),容器就自动组装好了?

是啊, 1)注册状态对象零件, 2)然后获取有状态组件。
上面的操作有可能是并发进行
0 请登录后投票
   发表时间:2005-04-08  
现在持久层就相当于干了这样件事?

DAO.getAbc(Id);
这样就取得了Abc类型的指定的一个组件。

还是你说的组件是指什么?
0 请登录后投票
   发表时间:2005-04-08  
躺在床上 又胡思乱想了一下,AJOO猪,你过来一下,我提出这么一个要求:

这么一个配置文件:
<AJOOContainer>
     <global>
                 <bean id="aaa" />
      <gloabal>
       <local>
                  <bean id="ccc" class="BeanC">
                         <property name="a"><ref bean="aaa/></property>
                         <property name="b"><ref bean="bbb"/></property>
                  </bean>
                     <bean id="bbb" />
       </local>
        <local>
                                   <bean id="ccc" class="BeanC">
                         <property name="a"><ref bean="aaa/></property>
                         <property name="b"><ref bean="bbb"/></property>
                  </bean>
                     <bean id="bbb" />
         </local>

</AJOOContainer>

其中全局表示local中的组件可以引用它来进行组装,local作为一个子容器的概念,字容器之间互不关涉,但是也可以手工定义几个字容器之间可以互相引用。

引入这么一个功能后,系统配置文件就可以分开多个子系统,子系统之间的定义互不干涉,合并的时候也不会很困难。
0 请登录后投票
   发表时间:2005-04-08  
nihongye 写道
现在持久层就相当于干了这样件事?

DAO.getAbc(Id);
这样就取得了Abc类型的指定的一个组件。

还是你说的组件是指什么?

由状态对象零件并不简简单单类似于Web中通过request.parameters传递上来的一个字符串。 有可能是一个 同步连接Connect,也可能是一个会话Session等等。
考虑这么一个有状态组件:
abstract AJOO_ZHUZHU{   //statefull component
        Connect connect;  //statefull 
        DAO dao;
        MailSender ms;
         WebServiceRMI  wmr;
         public void execute();{
              dao.report(connect.readMsg(););;
             ms.sendMail(connect.readMsg(););;
             //... more logic
               response=this.DoTransaction();;
              connect.writeReponseMsg(res);; 
          }
       public abstract Msg doTransaction();;


}

虽然可以通过将Connect 作为Execute的参数消除这个有状态,但是这里只是为了说明问题而已。 


利用AJOO 的 YAN IOC 容器,那么我的系统骨干框架就可以这么干了:


Connect connect= ....... //wait for a connect, block here
//一个同步连接上来,开启一个线程进行处理
new Thread(); {

yanContainer.regisgerValue("connect",connect);;
 (( AJOO_ZHUU);yanContainer.getInstance("ajoo zhuzhu "););.execute();;  //prototype 

}


这样的话,对于我的系统框架来说,关于对象组装全部的工作都交给Yan 容器来做了。 我的那个很恶心的有状态组件AJOO_ZHUZHU也可以写的很简单,丝毫不容关心它的那些组件从哪儿得来。  
0 请登录后投票
   发表时间:2005-04-08  
nihongye 写道
1.
引用
读取到beanB和BeanC时类似,值得注意的是,当最后读取配置文件完毕,应用中需要获取BeanA的实例时,Yan容器必须能够对BeanA,BeanB,BeanC之间的依赖性进行解析和有顺序的组装。

这个yan做得到吧。
2.局部组装和全局组装由yan实现,也应该事件容易的事情,但目前YanContainer的接口Dependency getDependency()还没看到作用范围这种概念,感觉有用性也是0。
3.线程这个太难了吧,是否new Abc(),容器就自动组装好了?


getDependency被用在DelegatingContainer里面,否则,你怎么自己实现Component?

create(Dependency dep);;

拿到一个Component,和一个ComponentMap,没有getDependency,你怎么调用这个create函数呢?
不过这主要是给外围库作者用的。终端用户不需要关心。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics