Spring AOP 全部通知, 四种通知方式,Around, Before, After, Throws
Spring3.0 需要独立添加 aopalliance-1.0.jar , 否则报 层次结构错误(父类找不到实现)
<!-- 【前置通知】(方法前通知) `````````````【拦截器】 --> <bean id="myMethodBeforeAdvice" class="aop.advice.MyMethodBeforeAdvice"/> <!-- 目标对象 --> <bean id="welcomeServiceTarget" class="aop.service.WelcomeServiceImpl"> <property name="name" value="tom"/> </bean> <!-- 代理对象 --> <bean id="welcomeServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <!-- 代理接口集 --> <property name="proxyInterfaces"> <list> <value>aop.service.WelcomeService</value> <!-- 【暴露】目标接口 --> </list> </property> <!-- 目标对象 --> <property name="target" ref="welcomeServiceTarget"/> <!-- 【持有】目标对象 --> <!-- 拦截器名集 --> <property name="interceptorNames"> <list> <value>myMethodBeforeAdvice</value> <!-- 【增加】新功能 --> </list> </property>
<!-- <property name="proxyTargetClass" value="true"/> true:类代理(继承),false:接口代理-->
</bean>
/** * 前置通知(方法前) */ public class MyMethodBeforeAdvice implements MethodBeforeAdvice{ @Override public void before(Method method, Object[] args, Object target) throws Throwable { System.out.println("方法前调用......................"); } }
ApplicationContext ac = new ClassPathXmlApplicationContext("aop/service/aop.xml");
// 获取【代理对象】才有【增强功能】 WelcomeService ws = (WelcomeService) ac.getBean("welcomeServiceProxy"); ws.sayName();