来看spring供应的事件办理
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。spring供应的事件办理能够分为两类:编程式的和声明式的。编程式的,对照天真,可是代码量年夜,存在反复的代码对照多;声明式的比编程式的更天真。编程式次要利用transactionTemplate。省略了部分的提交,回滚,一系列的事件对象界说,需注进事件办理对象;声明式:次要利用TransactionProxyFactoryBean,环绕Poxy的静态代办署理,可以主动的提交和回滚事件。统不雅spring事件,环绕着两个中心PlatformTransactionManager和TransactionStatus,上面我们以声明式体例来说解。
Spring声明式是以代办署理的体例完成对事件的办理。我们在Action中所利用的Service对象,实际上是代办署理对象的实例,并非我们所写的Service对象实例。既然是两个分歧的对象,那为何我们在Action中可以象利用Service对象一样的利用代办署理对象呢?为了申明成绩,假定有个Service类叫AService,它的Spring事件代办署理类为AProxyService,AService完成了一个接口IAService(这里多了一个接口IAService,是为了申明接口代办署理的体例)。
Spring事件代办署理体例有两种,一种是类代办署理体例,一种是接口代办署理体例。在Spring的设置文件中能够指定代办署理体例,今朝我们利用的都是类代办署理体例。//以下设置指定为类代办署理体例
<propertyname="proxyTargetClass"><value>true</value></property>
1、类代办署理体例
类代办署理体例的完成体例是经由过程承继的体例来完成,上面用伪代码来讲明。
interfaceIAService{
publicvoidsave(ValueObjectobject);
}
classAServiceimplementsIAService{
publicvoidsave(ValueObjectobject){...}
}
//Spring主动天生的代办署理类.
classAProxyServiceextendsAService{
publicvoidsave(ValueObjectobject){
try{
启动事件的代码;
super.save(object);
提交事件的代码;
}catch(Exceptione){
回滚事件的代码;
}
}
}在Action的挪用代码:
AServicea=(AService)getBean("aProxyServiceBeanName");
这里getBean("aProxyServiceBeanName")失掉的是AProxyService类的实例,由于AProxyService是AService的一个子类,以是这里能够强迫转型为AService。我们前面挪用a.save(object)的时分,挪用的是AProxyService.save()办法,而这个办法是有事件处置的。Spring就是如许实现了事件办理。//上面的这行代码也是一样的效果。
IAServicea=(IAService)getBean("aProxyServiceBeanName");
Spring经由过程CGLib来完成了类代办署理体例。
2、接口代办署理体例
接口代办署理体例是经由过程完成接口,援用类实例来完成的,以是这里必定要有一个接口IAService,而类代办署理体例是不必要这个接口的。
//Spring主动天生的代办署理类.
classAProxyServiceimplementsIAService{
privateAServiceaService;
publicvoidsetAService(AServiceaService){
this.aService=aService;
}
publicvoidsave(ValueObjectobject){
try{
启动事件的代码;
aService.save(object);//注重这行代码与下面的分歧。
提交事件的代码;
}catch(Exceptione){
回滚事件的代码;
}
}
}在Action的挪用代码:
AServicea=(AService)getBean("aProxyServiceBeanName");
下面这行代码会报ClassCastException毛病,由于getBean("aProxyServiceBeanName")失掉的是AProxyService类的实例,而AProxyService实例其实不能转型为AService范例,固然二者都完成了统一个接口,但他们之间并没有承继干系。就象ArrayList和LinkedList,他们能够转换成List,但他们之间其实不能相互转换。以是这里必需如许利用:
IAServicea=(IAService)getBean("aProxyServiceBeanName");//要转换成接口范例。
挪用a.save()办法实在就是挪用AProxyService.save()办法。
Spring经由过程Java静态代办署理来完成接口代办署理
检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。 是一种突破用户端机器环境和CPU Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种为 Internet发展的计算机语言 是一种使用者不需花费很多时间学习的语言 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页:
[1]