基于Schema配置切面
如果项目不能使用JDK 5.0,那么就无法使用基于@AspectJ注解的切面了。
一个简单的切面配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用Spring的多个Schema空间的格式 -->
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:config proxy-target-class="true">
<aop:aspect ref="adviceMethods"><!-- #1、引用#4處的adviceMethods -->
<aop:before method="preGreeting" pointcut="target(com.smart.schema.NaiveWaiter) and execution (* greetTo(..))"/><!-- 聲明切點表達式 -->
<!-- 增強方法使用adviceMethods Bean中的preGreeting方法 -->
</aop:aspect>
</aop:config>
<bean id="adviceMethods" class="com.smart.schema.AdviceMethods"/><!-- #4、增強方法所在的Bean -->
<bean id="naiveWaiter" class="com.smart.schema.NaiveWaiter"/>
<bean id="naughtWaiter" class="com.smart.schema.NaiveWaiter"/>
</beans>
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<aop:config proxy-target-class="true">
<aop:aspect ref="adviceMethods"><!-- #1、引用#4處的adviceMethods -->
<aop:before method="preGreeting" pointcut="target(com.smart.schema.NaiveWaiter) and execution (* greetTo(..))"/><!-- 聲明切點表達式 -->
<!-- 增強方法使用adviceMethods Bean中的preGreeting方法 -->
</aop:aspect>
</aop:config>
<bean id="adviceMethods" class="com.smart.schema.AdviceMethods"/><!-- #4、增強方法所在的Bean -->
<bean id="naiveWaiter" class="com.smart.schema.NaiveWaiter"/>
<bean id="naughtWaiter" class="com.smart.schema.NaiveWaiter"/>
</beans>
NaiveWaiter.java
package com.smart.schema;
import com.smart.aspectj.Waiter;
public class NaiveWaiter implements Waiter
{
@Override
public void greetTo(String name)
{
System.out.println("Greet to "+name+"...");
}
@Override
public void serveTo(String name)
{
System.out.println("Serving to "+name+"...");
}
}
package com.smart.schema;
public class AdviceMethods
{
public void preGreeting()
{
System.out.println("--How are you!--");
}
}