导读: 目前整个开发社区对AOP(Aspect Oriented Programing)推崇备至,也涌现出大量支持AOP的优秀Framework,--Spring, JAC, Jboss AOP 等等。AOP似乎一时之间成了潮流。Java初学者不禁要发出感慨,OOP还没有学通呢,又来AOP。本系列文章便是为您做出这方面的补救,只是通过一个简单的例子便可以向初学者展示一下如何来进行AOP。 为了简单起见,例子没有没有使用任何第三方的AOP Framework, 而是利用Java语言本身自带的动态代理功能来实现AOP。 让我们先回到AOP本身,AOP主要应用于日志记录,性能统计,安全控制,事务处理等方面。它的主要意图就要将日志记录,性能统计,安全控制等等代码从商业逻辑代码中清楚的划分出来,我们可以把这些行为一个一个单独看作系统所要解决的问题,就是所谓的面向问题的编程(不知将AOP译作面向问题的编程是否欠妥)。通过对这些行为的分离,我们希望可以将它们独立地配置到商业方法中,而要改变这些行为也不需要影响到商业方法代码。 假设系统由一系列的Busines阅读全文>
发表于 @ 2008年03月01日 14:49:00|评论(loading...)|收藏
导读: 本文试图解释如何使用Spring来集成组件(包括组件的事务关系)。在J2EE应用程序中,连接到单个存储数据没有什么困难。但是一旦要求集成企业级组件的时候,情况就复杂了。一个组件一般会受到一个或多个存储数据的支持,因此当我们提到集成一个或多个组件的时候,我们就认为需要跨越多个组件、维护多个数据存储中的原子操作。J2EE服务器为这些组件提供了一个容器,这个容器可以管理这些事务性原子操作和跨组件的隔离。如果我们没有使用J2EE服务器,Spring可以帮助我们。Spring在集成组件服务和它们相关的事务关系的时候,是基于控制倒置(Inversion of Control)的。 集成(Assembling)组件事务 假设在我们的企业组件库中,已经拥有了一个审计(audit)组件,客户端可以调用它的服务方法。后来,当我们希望建立一个订单处理系统的时候,我们 发现了一个设计需求:OrderListManager组件服务也需要审计组件服务。OrderListManager建立和管理订单,因此所有的 OrderListManager服务都有自己的事务属性。当我们在OrderL阅读全文>
发表于 @ 2008年03月01日 14:24:00|评论(loading...)|收藏
导读: Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。 我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。 Spring在TransactionDefinition接口中定义这些属性,以供PlatfromTransactionManager使用, PlatfromTransactionManager是spring事务管理的核心接口。 代码 TransactionDefinition publicinterfaceTransactionDefinition { intgetPropagationBehavior(); intgetIsolationLevel(); intgetTimeout(); booleanisReadO阅读全文>
发表于 @ 2008年03月01日 14:14:00|评论(loading...)|收藏
Hibernate+Spring+Struts2+ExtJS开发CRUD功能
阅读全文>
发表于 @ 2008年02月19日 17:56:00|评论(loading...)|收藏
4.实现第二种集成方案:代理和委托Action. 这种集成方案要求我们编写一个Struts Action,但它只不过是一个包含在Spring应用上下文中的真正Struts Action的一个代理.该代理Action从Struts插件ContextLoaderPlugIn中获取应用上下文,从中查找真正的Struts Action,然后将处理委托给真正的Struts Action.这个方法的幽雅之处在于:只有代理action才会包含Spring特定的处理.真正的Action可以作为org.apache.struts.Action的子类来编写. 下面我们来看一段在之中集成方式下的Struts Action源代码: public class CourceAction extends Action { private CourceService courceService; public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServle阅读全文>
发表于 @ 2007年12月14日 17:59:00|评论(loading...)|收藏
Spring是一个轻量级(大小和系统开支的角度)的IoC和AOP容器.它力图简化J2EE开发即J2EE without EJB.而且作为帮助企业级开发的核心支柱,Spring为模型层(OR持久层:Hibernate、JDO、iBatis等)服务层(EJB、JNDI、WebService)以及表现层(Struts、JSF、Velocity)都提供了良好的支持和集成方案. 访问Spring官方站阅读全文>
发表于 @ 2007年12月14日 17:58:00|评论(loading...)|收藏
2.注册Spring插件:为了使Struts Action能够访问由Spring管理的Bean,我们就必须要注册一个知道Spring应用上下文的Struts插件.可以在struts-config.xml中通过如下的方式来完成注册. ContextLoadPlugin()负责装载一个Spring应用上下文.(具体的说:是一个WebApplicationContext).value属性值为要加载的配置Spring受控Bean的xml文件的URI. 3.完成第一种集成方案:实现一个知晓Spring的Action基类. 这种集成方案是从一个公共的能够访问Spring应用上下文的基类中派生所有的Struts Action,但值得庆幸的是:我们不用自己去编写这个知晓Spring应用上下文的基类,因为Spring已经提供了org.springframework.web.struts.ActionSupport:一个org.apache.struts.action.Action的抽象实现.它重载了setServlet()方法以从ContextLoa阅读全文>
发表于 @ 2007年12月14日 17:58:00|评论(loading...)|收藏