金色的骷髅 发表于 2015-1-18 11:34:29

JAVA编程:浅析Spring供应的事件办理办法

Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)Spring供应的事件办理能够分为两类:编程式的和声明式的。编程式的,对照天真,可是代码量年夜,存在反复的代码对照多;而声明式的比编程式的更天真便利。本文将会商这两种事件办理的区分。

  传统的JDBC事件办理

  以往利用JDBC举行数据操纵时,一样平常接纳DataSource,从数据源中失掉Connection,我们晓得数据源是线程平安的,而毗连不是线程平安的,以是对每一个哀求都是从数据源中从头掏出一个毗连。一样平常的数据源由容器举行办理,包含毗连池。比方TOMCAT,WEBSPHERE,WEBLOGIC等这些J2EE贸易容器都供应了这个功效。

  以往的我们利用JDBC在写代码时,事件办理大概会是如许:

Connectionconn=null;
try
{
 conn=DBConnectionFactory.getConnection;
 conn.setAutoCommit(false);
 //dosomething
 conn.commit();//committranscation
}
catch(Exceptione)
{
 conn.rollback();
 //dosth
}
finally
{
 try
 {
  conn.close();
 }
 catch(SQLExceptionse){//dosth.}
 //closeResultSet,PreparedStatement,Connection
 //notice:MaybeocurrExceptionwhenuclosers,pstmt,conn
}
  依照以往的思绪来写代码,代码量对照长,并且简单忽略,忘记一些try/catch,激发一些非常没法catch,固然偶然候我们会写DBTool类,来封闭这些资本,而且包管在封闭这些资本时,不向外抛非常。

  Spring供应的编程式的事件处置

  Spring供应了几个关于事件处置的类:

  ・TransactionDefinition//事件属性界说
  ・TranscationStatus//代表了以后的事件,能够提交,回滚。
  ・PlatformTransactionManager这个是spring供应的用于办理事件的基本接口,其下有一个完成的笼统类AbstractPlatformTransactionManager,我们利用的事件办理类比方DataSourceTransactionManager等都是这个类的子类。

  我们利用编程式的事件办理流程大概以下:

  1声明数据源

  2声明一个事件办理类,比方DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等

  3在我们的代码中到场事件处置代码:

TransactionDefinitiontd=newTransactionDefinition();
TransactionStatusts=transactionManager.getTransaction(td);
try
{
 //dosth
 transactionManager.commit(ts);
}
catch(Exceptione){transactionManager.rollback(ts);}
  利用spring供应的事件模板TransactionTemplate

voidadd()
{
 transactionTemplate.execute(newTransactionCallback(){
  pulicObjectdoInTransaction(TransactionStatusts)
  {//dosth}
 }
}
  TransactionTemplate也是为我们省往了部分事件提交、回滚代码;界说事件模板时,需注进事件办理对象.

  Spring声明式事件处置

  Spring声明式事件处置也次要利用了ioc,aop头脑,供应了TransactionInterceptor拦阻器和经常使用的代办署理类TransactionProxyFactoryBean,能够间接对组件举行事件代办署理。

  利用TransactionInterceptor步骤

  1.界说数据源,事件办理类

  2.界说事件拦阻器,suchas:

<beanid="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterceptor">
<propertyname="transactionManager"><refbean="transactionManager"/></property>
<propertyname="transactionAttributeSource">
<value>
com.test.UserManager.*r=PROPAGATION_REQUIRED
</value>
</property>
</bean>
  3.为组件声明一个代办署理类:ProxyFactoryBean

<beanid="userManager"class="org.springframework.aop.framework.ProxyFactoryBean">
<propertyname="proxyInterfaces"><value>com.test.UserManager</value></property>
<propertyname="interceptorNames">
<list>
<idreflocal="transactionInterceptor"/>
</list>
</property>
</bean>
  利用TransactionProxyFactoryBean:

<beanid="userManager"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<propertyname="transactionManager"><refbean="transactionManager"/></property>
<propertyname="target"><reflocal="userManagerTarget"/></property>
<propertyname="transactionAttributes">
<props>
<propkey="insert*">PROPAGATION_REQUIRED</prop>
<propkey="update*">PROPAGATION_REQUIRED</prop>
<propkey="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
  TransactionProxyFactoryBean只是为组件的事件代办署理,假如我们要给组件增加一些营业方面的考证等,可使用TransactionTemplate加拦阻器体例,为组件增加多个拦阻器,springAOP中供应了三类Advice,即前加强,后加强,抛出非常时的加强,能够天真利用。
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点

金色的骷髅 发表于 2015-1-21 10:23:14

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

冷月葬花魂 发表于 2015-1-23 15:55:17

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

兰色精灵 发表于 2015-1-29 13:04:26

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

老尸 发表于 2015-2-6 01:09:43

是一种为 Internet发展的计算机语言

愤怒的大鸟 发表于 2015-2-14 19:31:16

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

变相怪杰 发表于 2015-3-1 19:10:20

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

飘灵儿 发表于 2015-3-8 08:15:34

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

活着的死人 发表于 2015-3-12 16:37:43

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

若天明 发表于 2015-3-16 12:20:11

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

小女巫 发表于 2015-3-22 20:13:30

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

因胸联盟 发表于 2015-3-29 22:52:48

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

深爱那片海 发表于 2015-4-3 20:44:37

是一种语言,用以产生「小应用程序(Applet(s))

海妖 发表于 2015-4-4 01:36:45

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

谁可相欹 发表于 2015-4-10 01:09:36

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

灵魂腐蚀 发表于 2015-4-26 20:50:41

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

admin 发表于 2015-6-4 17:34:44

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

再见西城 发表于 2015-7-8 06:18:54

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

精灵巫婆 发表于 2015-7-12 01:38:08

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

仓酷云 发表于 2015-7-15 09:17:28

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
页: [1] 2
查看完整版本: JAVA编程:浅析Spring供应的事件办理办法