1. 先写出业务对象接口及实现业务对象。
- public interface Interface {
- public void hello();
- }
这里写俩个实现。
- public class InterfaceImpl implements Interface {
- /**
- * @see com.alipay.aop.BusinessInterface#hello()
- */
- @Override
- public void hello() {
- System.out.println("AOP TEST!!");
- }
- }
- public class InterfaceImplTest implements Interface {
- /**
- * @see aop.Interface#hello()
- */
- @Override
- public void hello() {
- System.out.println("helo world!!");
- }
- }
2. 实现自己的代理,创建自己的interceptor
- public class MyInterceptor implements MethodInterceptor {
- /**
- * @see org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept.MethodInvocation)
- */
- @Override
- public Object invoke(MethodInvocation methodInvocation) throws Throwable {
- String info = methodInvocation.getMethod().getDeclaringClass()+ "." +
- methodInvocation.getMethod().getName() + "()";
- System.out.println(info);
- try{
- Object result = methodInvocation.proceed();
- return result;
- }
- finally{
- System.out.println(info);
- }
- }
- }
3. 配置文件
<?xml version="1.0" encoding="GBK"?>
- <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:sofa="http://img.alipay.net/dtd/schema/service"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:webflow="http://www.springframework.org/schema/webflow-config"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://img.alipay.net/dtd/schema/service http://img.alipay.net/dtd/schema/service/sofa-service.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd"
- default-autowire="byName">
- <bean id="beanTarget" class="aop.InterfaceImpl"/>
- <bean id="hello" class="aop.InterfaceImplTest" />
- <bean id="myInterceptor" class="aop.MyInterceptor"/>
- <bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean">
- <property name="proxyInterfaces">
- <value>aop.Interface</value>
- </property>
- <property name="interceptorNames">
- <list>
- <value>myInterceptor</value>
- <value>beanTarget</value>
- </list>
- </property>
- </bean>
- <bean id="testBean" class="org.springframework.aop.framework.ProxyFactoryBean">
- <property name="proxyInterfaces">
- <value>aop.Interface</value>
- </property>
- <property name="interceptorNames">
- <list>
- <value>myInterceptor</value>
- <value>hello</value>
- </list>
- </property>
- </bean>
- </beans>
4. 测试代码
- public class Main {
- /**
- *
- * @param args
- */
- public static void main(String[] args) {
- ClassPathResource resource = new ClassPathResource("spring.xml");
- XmlBeanFactory beanFactory = new XmlBeanFactory(resource);
- Interface bean = (Interface)beanFactory.getBean("bean");
- bean.hello();
- Interface testBean = (Interface)beanFactory.getBean("testBean");
- testBean.hello();
- }
- }