浏览 16234 次
锁定老帖子 主题:Jacn
该帖已经被评为精华帖
作者 正文
   发表时间:2005-10-10  
楼主,有点小小的疑问
如果只是为了refactor方便
xml方式的配置,在Eclipse重构里也同样可以支持的
0 请登录后投票
   发表时间:2005-10-10  
我认为jsf是没什么前途的。
如果只为支持refactor, 可以基于xml格式开发一个, 完全移到java中似乎没有非常的必要性,尽管目前我们的配置也有不少是在java中完成的。
0 请登录后投票
   发表时间:2005-10-11  
canonical 写道
我认为jsf是没什么前途的。
如果只为支持refactor, 可以基于xml格式开发一个, 完全移到java中似乎没有非常的必要性,尽管目前我们的配置也有不少是在java中完成的。


Thank you for your constructive comment! It would be better if you could share with us what will have a future.
0 请登录后投票
   发表时间:2005-10-11  
tapestry1122 写道
楼主,有点小小的疑问
如果只是为了refactor方便
xml方式的配置,在Eclipse重构里也同样可以支持的


Eclipse 能帮一些忙。

<bean id="foo" class="Foo">
  <property name="bar"><ref bean="bar"></property>
</bean>

你修改 class 属性可以考虑让 Eclipse 进行猜测让你来判断(没有安全的自动的方法)。

如果你修改 property 例如 把 Foo.setBar() 函数 改成 Foo.setBar2() 那恐怕完全就是你自己的事儿了。

如果你把 Foo 删除掉又会出现什么状况? 

还有一点很重要,XML 不做类型检查: <ref bean="bar">  中万一 bar 不是 setBar() 所需要的 Bar class, Eclipse 能告诉你这一点么?

foo.setBar(bar)  马上就会告诉你你是不是可以 把 bar 注入到 foo 中。
0 请登录后投票
   发表时间:2005-10-11  
tapestry1122 写道
楼主,有点小小的疑问
如果只是为了refactor方便
xml方式的配置,在Eclipse重构里也同样可以支持的


补充一点, Jacn 还有一个非常重要的使命,就是把 Spring 的那些繁琐的细节掩藏起来, 让 IOC 成为初学者简单容易上手的编程思想和工具。

举个例子,
    <bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager"><ref bean="transactionManager"/></property>
        <property name="transactionAttributes">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
        <property name="target">
            <bean class="com.lcare.service.impl.UserManagerImpl">
                <property name="userDAO"><ref bean="userDAO"/></property>
            </bean>
        </property>
        <property name="preInterceptors">
            <list>
                <ref bean="userSecurityInterceptor"/>
            </list>
        </property>
    </bean>


这是一个典型的带transaction 功能的 bean 的定义。

在 Jacn 中, 你完全不需要知道 TransactionProxyFactoryBean, 只需要使用一个标记函数 enableTx()

userManager.setUserDAO(userDAO);;
Properties pu = new Properties();; {
	pu.put("save*", "PROPAGATION_REQUIRED");;
	pu.put("remove*", "PROPAGATION_REQUIRED");;
	pu.put("*", "PROPAGATION_REQUIRED,readOnly");;
}
enableTx(userManager, transactionManager, pu, null, new Object[] {userSecurityInterceptor}, null);;


代码行数减少一半多,少一个Spring 概念去理解,强类型检查。 初学者喜欢这个。

Constructor 方式的 IOC 在 Jacn 里面也是简化很多。前面一个帖子里面有一个样例:

foo = new Foo(bar)

这句话 告诉 Spring 容器,如果有人要一个 "foo" 对象实例的话,你该怎样来用constructor 来构造这个实例。 这句话在经典 Spring 中该怎么写?没有 4/5 行代码下不来把?


再来一个Spring 繁琐不堪的地方。假设你有一个 bean 希望在对象创立后能够再调用几个方法来处理这个对象,就像这样:

foo.setClassName("anything");;
foo.processClassName("decoration");;
foo.finalTouchClassName();;


Jacn 中你就这样写就够了。在经典 Spring 你使用 MethodInvokingFactoryBean (也可以使用init-method 来调用一个方法)

  <bean id="foo" class="bran.jacn.test.Foo" singleton="true">
    <property name="className">
      <value>anything</value>
    </property>
  </bean>
  <bean id="__6" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" ref="foo" />
    <property name="targetMethod" value="finalTouchClassName" />
  </bean>
  <bean id="__4" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" ref="foo" />
    <property name="targetMethod" value="processClassName" />
    <property name="arguments">
      <list>
        <value>decoration</value>
      </list>
    </property>
  </bean>



为了定义 foo, 你还要定义两个辅助的类型怪怪的 MethodInvokingFactoryBean, 够初学者迷惑半天的。

至此,孰优孰劣 不言而喻, 我认为。
0 请登录后投票
   发表时间:2005-10-11  
恕我直言

如果熟悉spring的人,对jacn很是不理解.
新手可能jacn能带给开发者很多方便.但spring迟早都要学.

可是我觉的sping配置文件实在很是简单.

感觉楼主谈的技术多了点,可能是问的太多.
希望楼主像dudu说的,多介绍介绍公司情况,想法等.要不老鸟肯定不敢去.
0 请登录后投票
   发表时间:2005-10-11  

Jacn 的主要目的是
1.简化 Spring  - 通过简单API 把 Spring 的内衣内裤完全遮盖起来。特别是大量地AOP 相关的部分。
2.提高 使用 Spring 的 效率 - 通过 IDE 的  refactor 的支持, 这是极限编程的支柱。
3.把 Spring 和 JSF 完全整合在一起, 提高JSF的 程序员 友好性。
4. Jacn 还有一个非常重要的使命,就是把 Spring 的那些繁琐的细节掩藏起来, 让 IOC 成为初学者简单容易上手的编程思想和工具。

我觉得Jacn并不能真正的简化Spring.Jacn在强调简洁和协作能力方面,并没有很大的提高.相反,通过代码来代替xml,并不是最好的办法.用户没有选择,这与自由的软件精神有点貌合神离.如果用户有选择的话,可以用代码,也可以用xml,也许可能更好.

使用Jacn,我如何来处理内联定义的bean呢,如果bean之间的依赖关系变了,还要重新编译java文件.
使用Jacn,开发者要自己很清楚bean的行为,这好像不太合乎面向对象的习惯吧.
有时不小心把字母误写,可能调试的时候都不知道错在什么地方?
我不知道Jacn是不是预实例化bean文件,如果那样的话.牺牲的是时间和内存为代价,而不是像spring那样在用到的时候才加载它.

个人认为基于组件的JSF没有什么前途,更喜欢基于模板的freemarker,

Jacn个人的东西太少,估计参入的人太少,思想过于的单一.而且太依赖于spring,

对于spring,hibernate能否维持一项新技术使其有长久的生命力,我并不乐观.

本人对spring,hibernate了解不深,希望大家见谅.
0 请登录后投票
   发表时间:2005-10-11  
sunr 写道
毕业生解决户口不?


如果你是北京户口我们就解决:)


这事儿我还真的不清楚。。
0 请登录后投票
   发表时间:2005-10-11  
zkj_beyond 写道
恕我直言

如果熟悉spring的人,对jacn很是不理解.
新手可能jacn能带给开发者很多方便.但spring迟早都要学.

可是我觉的sping配置文件实在很是简单.

感觉楼主谈的技术多了点,可能是问的太多.
希望楼主像dudu说的,多介绍介绍公司情况,想法等.要不老鸟肯定不敢去.


我的看法是,IoC 部分就不用再学了。

既然说到, 我还有两个发起人比我更加 “老”, 那叫 “人书俱老”的老。 这两位博士都是行业的领袖级人物, 我负责技术平台,资历最浅, 今年 37 岁。 负责资金运作的伙伴认为资金不需要操心。 负责市场和客户的伙伴告诉我市场不用操心。就说这么多吧。 详情面谈:)
0 请登录后投票
   发表时间:2005-10-11  
挺好啊,我photoshop玩地挺好,可惜现在不在北京
我也在美企,不过氛围和这招聘描述的差远了
0 请登录后投票
论坛首页 Java企业应用版

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