在xml中
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
advice-ref="beforeAdvice"/>
method="beforeAdvice(java.lang.String)"
arg-names="param"/>
method="afterReturningAdvice"
arg-names="retVal"
returning="retVal"/>
method="afterThrowingAdvice"
arg-names="exception"
throwing="exception"/>
method="afterFinallyAdvice"/>
method="aroundAdvice"/>
implement-interface="cn.javass.spring.chapter6.service.IIntroductionService"
default-impl="cn.javass.spring.chapter6.service.impl.IntroductiondService"/>
java中例子1
@Test
public void testSchemaBeforeAdvice() {
System.out.println("======================================");
ApplicationContext ctx = new ClassPathXmlApplicationContext("chapter6/advice.xml");
IHelloWorldService helloworldService = ctx.getBean("helloWorldService", IHelloWorldService.class);
helloworldService.sayBefore("before");
System.out.println("======================================");
}
例子2
@Test
public void testSchemaAdvisor() {
System.out.println("======================================");
ApplicationContext ctx = new ClassPathXmlApplicationContext("chapter6/advice.xml");
IHelloWorldService helloworldService = ctx.getBean("helloWorldService", IHelloWorldService.class);
helloworldService.sayAdvisorBefore("haha");
System.out.println("======================================");
}
这里说明一下
所以“”实际上是定义横切逻辑,就是在连接点上做什么,“”则定义了在哪些连接点应用什么。Spring这样做的好处就是可以让多个横切逻辑(即定义的)多次使用,提供可重用性。