对于non-singleton的切面,最简单的配置管理方法是定义一个bean原型定义并且使用@Configurable支持,这样就可以在切面被AspectJ runtime创建后管理它们。
如果你希望一些@AspectJ切面使用AspectJ来织入(例如使用load-time织入domain object) 和另一些@AspectJ切面使用Spring AOP,而这些切面都是由Spring来管理的,那你就需要告诉Spring AOP @AspectJ自动代理支持那些切面需要被自动代理。 你可以通过在 声明中使用一个或多个 include。 每一个指定了一种命名格式,只有bean命名至少符合其中一种情况下才会使用Spring AOP自动代理配置:
6.7.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) Load-time weaving(LTW)指的是在虚拟机载入字节码文件时动态织入AspectJ切面。 关于LTW的详细信息,请查看 LTW section of the AspectJ Development Environment Guide。 在这里我们重点来看一下Java 5环境下Spring应用如何配置LTW。 LTW需要定义一个 aop.xml,并将其置于META-INF目录。 AspectJ会自动查找所有可见的classpath下的META-INF/aop.xml文件,并且通过定义内容的合集来配置自身。 一个基本的META-INF/aop.xml文件应该如下所示: \ 'include'的内容告诉AspectJ那些类型需要被纳入织入过程。使用包名前缀并加上\(表示该子包中的所有类型)是一个不错的默认设定。 使用include元素是非常重要的,不然AspectJ会查找每一个应用里面用到的类型(包括Spring的库和其它许多相关库)。通常你并不希望织入这些类型并且不愿意承担AspectJ尝试去匹配的开销。 希望在日志中记录LTW的活动,请添加如下选项: \ \ options=\ -XmessageHandlerClass:org.springframework.aop.aspectj.AspectJWeaverMessageHandler\ 最后,如果希望精确的控制使用哪些切面,可以使用 aspects。 默认情况下所有定义的切面都将被织入(spring-aspects.jar包含了 META-INF/aop.xml,定义了配置管理和事务管理切面)。 如果你在使用 spring-aspects.jar,但是只希望使用配制管理切面而不需要事务管理的话,你可以像下面那样定义: \ within=\igurerAspect\ options=\p.aspectj.AspectJWeaverMessageHandler\ 在Java 5平台下,LTW可以通过虚拟机的参数来启用。 -javaagent: Eclipse AspectJ by Adrian Colyer et. al. (Addison-Wesley, 2005)全面介绍并提供了AspectJ语言参考。 AspectJ in Action by Ramnivas Laddad (Manning, 2003)是一本非常出色介绍AOP的书籍;全书着重介绍了AspectJ,但也对一些通用的AOP场景进行了比较深入的研究。 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/SmartTony/archive/2008/01/23/2061942.aspx