1.编写一个业务逻辑接口 package com.logic; public interface MyInter { public int add(int a,int b); } 2.实现一个逻辑接口 package com.logic; public class ALogic implements MyInter{ public int add(int a, int b) { System.out.println("已打印"); return a + b; } } 3.编写一个辅助功能接口 package com.semi; public interface MySemi { public void print(); } 4.同时实现一个辅助功能接口,前置,后置接口 package com.semi; import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; import org.springframework.aop.MethodBeforeAdvice; //辅助功能类实现前置,和后置接口 public class ASemi implements MySemi,MethodBeforeAdvice,AfterReturningAdvice{ public void print() { System.out.println("A has been written!"); } //前置 public void before(Method method, Object[] args, Object target) throws Throwable { print(); } //后置 public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable { print(); } } 5.编写主函数 package com.app; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.logic.MyInter; public class MyApp { public static void main(String[] args) { ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml"); //此处调用动态代理的Id号,返回一个逻辑接口对象 MyInter aa = (MyInter)cxt.getBean("bean"); int ret = aa.add(1, 100); System.out.println("ret"+ret); } } 6.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!--CONFIG动态代理配置 id可以自己任意取名字--> <bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <!-- 逻辑业务接口类全包名 --> <value>com.logic.MyInter</value> </property> <property name="target"> <ref local="logic"/> </property> <property name="interceptorNames"> <list> <value>theAdvisor</value> </list> </property> </bean> <!--CLASS 逻辑业务类全包名--> <bean id="logic" class="com.logic.ALogic"/> <!--ADVISOR 实现辅助功能注入和切入点控制--> <!--Note: An advisor assembles pointcut and advice--> <bean id="theAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name="advice"> <ref local="theBeforeAdvice"/> </property> <property name="pattern"> <!-- 逻辑业务实现类包含的函数 --> <value>com/.logic/.ALogic/.add</value> </property> </bean> <!--ADVICE辅助功能类全包名--> <bean id="theBeforeAdvice" class="com.semi.ASemi"/> </beans> 7.把log4j文件放到src文件夹下