Spring使我们使用AOP非常容易。这是一个简单的日志记录示例:
@Aspectpublic class MyLogger { private Logger log = Logger.getLogger(getClass()); @After("execution(* com.example.web.HomeController.*(..))") public void log(JoinPoint point) { log.info(point.getSignature().getName() + " called..."); }}然后只需配置您的applicationContext.xml(或等效文件):
<aop:aspectj-autoproxy> <aop:include name="myLogger"/> </aop:aspectj-autoproxy> <bean id="myLogger" />
您会在MyLogger类中注意到我
@After在方法上方指定的内容。这被称为建议,它基本上指定了将在有问题的方法 之后 调用此“
log”方法。其他选项包括
@Before, @Around, @AfterThrowing。
该表达式
"execution(*com.example.web.HomeController.*(..))"称为切入点表达式,它指定我们要定位的对象(在这种情况下,是HomeController类的所有方法)。
PS
aop名称空间(
xmlns:aop="http://www.springframework.org/schema/aop")和架构位置(取决于版本)将需要添加到顶部的applicationContext.xml中。这是我的设置:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">



