仓酷云

标题: 发布一篇Spring源代码剖析(六):Spring声明式事件处置 [打印本页]

作者: 再现理想    时间: 2015-1-18 11:12
标题: 发布一篇Spring源代码剖析(六):Spring声明式事件处置
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
我们看看Spring中的事件处置的代码,利用Spring办理事件有声明式和编程式两种方式,声明式事件处置经由过程AOP的完成把事物办理代码作为方面封装来横向拔出到营业代码中,使得事件办理代码和营业代码解藕。在这类体例我们分离IoC容器和Spirng已有的FactoryBean来对事件办理举行属性设置,好比传布举动,断绝级别等。个中最复杂的方式就是经由过程设置TransactionProxyFactoryBean来完成声明式事物;
在全部源代码剖析中,我们能够大抵能够看到Spring完成声明式事物办理有这么几个部分:
*对在高低文中设置的属性的处置,这里触及的类是TransactionAttributeSourceAdvisor,这是一个关照器,用它来对属性值举行处置,属性信息放在TransactionAttribute中来利用,而这些属性的处置常常是和对切进点的处置是分离起来的。对属性的处置放在类TransactionAttributeSource中完成。
*创立事物的历程,这个历程是托付给详细的事物办理器来创立的,但Spring经由过程TransactionStatus来传送相干的信息。
*对事物的处置经由过程对相干信息的判别来托付给详细的事物办理器完成。
我们上面看看详细的完成,在TransactionFactoryBean中:
Java代码
publicclassTransactionProxyFactoryBeanextendsAbstractSingletonProxyFactoryBean
    implementsFactoryBean,BeanFactoryAware{
//这里是Spring事件处置而利用的AOP拦阻器,两头封装了Spring对事件处置的代码来撑持声明式事件处置的完成
  privatefinalTransactionInterceptortransactionInterceptor=newTransactionInterceptor();
  privatePointcutpointcut;
//这里Spring把TransactionManager注进到TransactionInterceptor中往
  publicvoidsetTransactionManager(PlatformTransactionManagertransactionManager){
    this.transactionInterceptor.setTransactionManager(transactionManager);
  }
//这里把在bean设置文件中读到的事件办理的属性信息注进到TransactionInterceptor中往
  publicvoidsetTransactionAttributes(PropertiestransactionAttributes){
    this.transactionInterceptor.setTransactionAttributes(transactionAttributes);
  }
  .........两头省略了其他一些办法.......
  //这里创立SpringAOP对事件处置的Advisor
  protectedObjectcreateMainInterceptor(){
    this.transactionInterceptor.afterPropertiesSet();
    if(this.pointcut!=null){
      //这里利用默许的关照器
      returnnewDefaultPointcutAdvisor(this.pointcut,this.transactionInterceptor);
    }
    else{
      //利用下面界说好的TransactionInterceptor作为拦阻器,同时利用TransactionAttributeSourceAdvisor
      returnnewTransactionAttributeSourceAdvisor(this.transactionInterceptor);
    }
  }
}
<p>
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的
作者: 只想知道    时间: 2015-1-20 17:06
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 飘飘悠悠    时间: 2015-1-24 12:03
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 变相怪杰    时间: 2015-2-1 09:56
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 小妖女    时间: 2015-2-7 02:24
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 莫相离    时间: 2015-2-7 15:59
Java是一种计算机编程语言,拥有跨平台、面向对java
作者: 老尸    时间: 2015-2-9 20:11
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 冷月葬花魂    时间: 2015-2-26 11:19
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 乐观    时间: 2015-3-8 14:03
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 愤怒的大鸟    时间: 2015-3-16 00:27
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者: admin    时间: 2015-3-22 18:10
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2