仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 563|回复: 11
打印 上一主题 下一主题

[学习教程] 来看spring供应的事件办理

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:00:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
先说优点,首先和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、类代办署理体例
类代办署理体例的完成体例是经由过程承继的体例来完成,上面用伪代码来讲明。
  1. interfaceIAService{
  2. publicvoidsave(ValueObjectobject);
  3. }
  4. classAServiceimplementsIAService{
  5. publicvoidsave(ValueObjectobject){...}
  6. }
  7. //Spring主动天生的代办署理类.
  8. classAProxyServiceextendsAService{
  9. publicvoidsave(ValueObjectobject){
  10. try{
  11. 启动事件的代码;
  12. super.save(object);
  13. 提交事件的代码;
  14. }catch(Exceptione){
  15. 回滚事件的代码;
  16. }
  17. }
  18. }
复制代码
在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,而类代办署理体例是不必要这个接口的。
  1. //Spring主动天生的代办署理类.
  2. classAProxyServiceimplementsIAService{
  3. privateAServiceaService;
  4. publicvoidsetAService(AServiceaService){
  5. this.aService=aService;
  6. }
  7. publicvoidsave(ValueObjectobject){
  8. try{
  9. 启动事件的代码;
  10. aService.save(object);//注重这行代码与下面的分歧。
  11. 提交事件的代码;
  12. }catch(Exceptione){
  13. 回滚事件的代码;
  14. }
  15. }
  16. }
复制代码
在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本书足以,这就是区别。
小妖女 该用户已被删除
沙发
发表于 2015-1-20 12:42:16 | 只看该作者
是一种突破用户端机器环境和CPU
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-20 21:10:54 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
爱飞 该用户已被删除
地板
发表于 2015-1-21 16:35:16 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
愤怒的大鸟 该用户已被删除
5#
发表于 2015-1-26 21:00:08 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
海妖 该用户已被删除
6#
发表于 2015-1-28 17:16:54 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
冷月葬花魂 该用户已被删除
7#
发表于 2015-2-5 15:28:17 | 只看该作者
是一种为 Internet发展的计算机语言
飘飘悠悠 该用户已被删除
8#
发表于 2015-2-12 14:42:13 | 只看该作者
是一种使用者不需花费很多时间学习的语言
只想知道 该用户已被删除
9#
发表于 2015-3-3 03:34:52 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
精灵巫婆 该用户已被删除
10#
发表于 2015-3-11 09:06:20 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-18 02:04:19 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
金色的骷髅 该用户已被删除
12#
发表于 2015-3-25 09:07:11 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 13:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表