SpringMvc自动代理

自动配置的好处是不需要挨个 实现【org.springframework.aop.framework.ProxyFactoryBean】 ,只需要 advisor 配置和

  <bean id="autoProxy" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />  代码即可

1.config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

  <bean id="logAfter" class="com.gc.action.LogAfter"></bean>
  <bean id="timeBook" class="com.gc.action.TimeBook"></bean>  
  <bean id="logAfterAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
   <!-- advice 要加入的代码 -->
  <property name="advice">
  <ref bean="logAfter"></ref> 
  </property>
  
  <!--指定do开头的方法 -->
  <property name="patterns">
  <value>.*do.*</value>
  </property>
  </bean>
  
  <!-- 自动aopd的配置 -->
  <bean id="autoProxy" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />  

  </beans>
View Code

2.使用logbefor 后 logafter  后 logaround的advice代码

3.ITimeBook

package com.gc.action;

public interface ITimeBook {

    public void doAudit(String name);
    
    public void doCheck(String name);
}
View Code

4.TimeBook

package com.gc.action;

public class TimeBook implements ITimeBook {

    @Override
    public void doAudit(String name) {
        // TODO Auto-generated method stub
        System.out.println("this is doAudit");
        
     int m=1/0;
    }

    @Override
    public void doCheck(String name) {
        // TODO Auto-generated method stub
        System.out.println("this is doCheck");
    }

}
View Code

5.测试

 ApplicationContext context=new FileSystemXmlApplicationContext("config-auto.xml");
              ITimeBook tb=(ITimeBook)context.getBean("timeBook");
              tb.doCheck("xiaox");
View Code
原文地址:https://www.cnblogs.com/tiancai/p/6734817.html