使用spring aspect ltw和tomcat进行web开发的aspect加载问题

使用spring aspect ltw与tomcat整合开发时,需要ltw一般有两种方法。一种是通过aspectj本身的classload机制,在tomcat启动脚本中,加载相应的java agent数据信息;另一种就是通过修改上下文的classLoader,而使用spring提供的tomcatInstrmentClassLoader来进行aspect的编织工作。
然而,在笔者的开发环境中,却发生了aspect无法被再次编织的问题。经过反复的检查,确认了是由于classLoader加载类的先后顺序以及spring对instrment的注入顺序发生了混乱,而导致aspect类并没有正确的被编织。

    使用spring aspect ltw与tomcat整合开发时,需要ltw一般有两种方法。一种是通过aspectj本身的classload机制,在tomcat启动脚本中,加载相应的java agent数据信息;另一种就是通过修改上下文的classLoader,而使用spring提供的tomcatInstrmentClassLoader来进行aspect的编织工作。
    然而,在笔者的开发环境中,却发生了aspect无法被再次编织的问题。经过反复的检查,确认了是由于classLoader加载类的先后顺序以及spring对instrment的注入顺序发生了混乱,而导致aspect类并没有正确的被编织。

继续阅读“使用spring aspect ltw和tomcat进行web开发的aspect加载问题”

spring和aspectj的结合inject原理(下篇)

     上篇讲解了在spring中aspectj,对普通@Transactional的事务控制支持,这篇主要了解一下spring的@Configurable对新建对象的spring属性支持,并顺带发布一个简单的rich domain的例子:)
    上篇地址:http://www.iflym.com/index.php/code/the-theory-about-spring-and-aspectj-pre.html

继续阅读“spring和aspectj的结合inject原理(下篇)”

spring和aspectj的结合inject原理(上篇)

     最近研究下aspectj,特别是对里面的代码编织和上下文控制有兴趣。后面看了下spring对aspectj的支持,以及简单了解了一下spring与aspectj结合的产品spring roo。这里主要介绍一下由aspectj支持的@transactional注释和@configurable原理,具体它们之间的关系以及由此衍生的domain静态编织等。

继续阅读“spring和aspectj的结合inject原理(上篇)”