摘要: 一、Spring的事务管理:Spring提供了针对不同持久化机制的事务管理器。(AOP中的切面类,定义了很多通知) 如:hibernate有org.springframework.orm.hibernate3.HibernateTransactionManager二、事务的参数: 1. 事务的传播行为: a) PROPAGATION_REQUIRED:当前方法必须在一个事务中运行。如果一个事务正在运行,该方法将会在那个事务中运行。否则就要开始一个新事务。Spring的TransactionDefinition的默认传播行为。 b) PROPAGATION_SUPPORTS:当前方法不需要事务性 阅读全文
posted @ 2012-08-09 16:43 积淀 阅读(436) 评论(0) 推荐(1)
摘要: 最近在学习李刚著的《轻量级J2EE企业应用实战》,这本书写得条例清晰,通俗易懂,非常容易上手。在学习过程中,我自己参考该书做了些例子。下面是对Spring的声明式事务管理的总结和示例:通常建议采用声明式事务管理。声明式事务管理的优势非常明显:代码中无需关于关注事务逻辑,不需要修改业务逻辑代码,在业务逻辑中可以专心业务逻辑代码的编写,无需编写大量的事务逻辑代码。让Spring声明式事务管理负责事务逻辑,声明式事务管理无需与具体的事务逻辑耦合,可以方便地在不同事务逻辑之间切换。声明式事务管理的配置方式,通常有如下三种:1.使用TransactionProxyFactoryBean为目标bean生成 阅读全文
posted @ 2012-08-09 16:39 积淀 阅读(685) 评论(0) 推荐(0)
摘要: 在低版本Spring中定义一个切面是比较麻烦的,需要实现特定的接口,并进行一些较为复杂的配置,低版本Spring AOP的配置是被批评最多的地方。Spring听取这方面的批评声音,并下决心彻底改变这一现状。在Spring2.0中,Spring AOP已经焕然一新,你可以使用@AspectJ注解非常容易的定义一个切面,不需要实现任何的接口。 Spring2.0采用 @AspectJ注解对POJO进行标注,从而定义一个包含切点信息和增强横切逻辑的切面,Spring 2.0可以将这个切面织入到匹配的目标Bean中。@AspectJ注解使用AspectJ切点表达式语法进行切点定义,可以通过切点函数、运 阅读全文
posted @ 2012-08-09 15:31 积淀 阅读(733) 评论(0) 推荐(0)
摘要: Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflecti 阅读全文
posted @ 2012-08-07 18:02 积淀 阅读(402) 评论(0) 推荐(0)
摘要: 环境要求spring对AOP的支持*如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP* 如果目标对象实现了接口,可以强制使用CGLIB实现AOP*如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换如何强制使用CGLIB实现AOP?* 添加CGLIB库,SPRING_HOME/cglib/*.jar* 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>JDK动态代理和CGLIB字节码生成的区别?* JDK动态代理只能 阅读全文
posted @ 2012-08-07 17:59 积淀 阅读(440) 评论(0) 推荐(0)
摘要: 问题: 在运行时,对一个JAVA类,能否知道属性和方法;能否调用它的任意方法? 答案是可以的,JAVA提供一种反射机制可以实现。 目录 获取类的Class对象 获取类的Fields 获取类的Method 获取类的Constructor 新建类的实例 Class<T>的函数newInstance 通过 阅读全文
posted @ 2012-08-07 17:58 积淀 阅读(443) 评论(0) 推荐(0)
摘要: java.lang.reflectInterface InvocationHandler可参考http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/reflect/InvocationHandler.htmlhttp://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/reflect/Proxy.htmlinvocation是“调用”的意思。这个类可以让我们在JVM调用某个类的方法时动态的为些方法做些什么事.InvocationHandler接口把我们的代理对象和被代理对象解 阅读全文
posted @ 2012-08-07 17:55 积淀 阅读(274) 评论(0) 推荐(0)
摘要: JAVA的动态代理代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理的创建时期,代理类可以分为两种。静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。 首先看一下静态代理:1、Count.javaJa 阅读全文
posted @ 2012-08-07 17:52 积淀 阅读(216) 评论(0) 推荐(0)
摘要: AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cro 阅读全文
posted @ 2012-08-06 14:43 积淀 阅读(308) 评论(0) 推荐(0)
摘要: 其实AOP的意思就是面向切面编程.OO注重的是我们解决问题的方法(封装成Method),而AOP注重的是许多解决解决问题的方法中的共同点,是对OO思想的一种补充!还是拿人家经常举的一个例子讲解一下吧:比如说,我们现在要开发的一个应用里面有很多的业务方法,但是,我们现在要对这个方法的执行做全面监控,或部分监控.也许我们就会在要一些方法前去加上一条日志记录,我们写个例子看看我们最简单的解决方案我们先写一个接口IHello.java代码如下:1packagesinosoft.dj.aop.staticaop;23publicinterfaceIHello{4/***//**5*假设这是一个业务方法6 阅读全文
posted @ 2012-08-06 13:58 积淀 阅读(447) 评论(0) 推荐(0)