zoukankan      html  css  js  c++  java
  • AOP的MethodBeforeAdvice

    使用Spring自动生成代理类,spring利用的是动态代理机制 
    接口 

    Java代码 
    public interface UserDao { 
    void addUser(); 
    void deleteUser(); 

    两个实现: 

    Java代码 
    public class UserDaoMySqlImpl implements UserDao {   
      
    @Override  
    public void addUser() {   
      System.out.println("UserDaoMySqlImpl.addUser()");   
    }   
      
    @Override  
    public void deleteUser() {   
      System.out.println("UserDaoMySqlImpl.deleteUser()");   
      
    }   
      
    }   



    public class UserDaoOracleImpl implements UserDao { 

    @Override 
    public void addUser() { 
      System.out.println("UserDaoOracleImpl.addUser()"); 


    @Override 
    public void deleteUser() { 
      System.out.println("UserDaoOracleImpl.deleteUser()"); 



    Device 
    import java.lang.reflect.Method; 

    import org.springframework.aop.MethodBeforeAdvice; 

    public class UserDaoBeforeAdvice implements MethodBeforeAdvice { 

    @Override 
    public void before(Method arg0, Object[] arg1, Object arg2) 
       throws Throwable { 
      System.out.println("UserDaoBeforeAdvice.before()"); 




    spring的配置文件 

    Xml代码 
    <!-- 配置实现类的bean,可以把所有的实现类都写上 -->  
    <bean id="userdao" class="com.dowebber.spring.aop.UserDaoMySqlImpl"></bean>  
    <!--配置Advice的bean -->  
    <bean id="beforeadvice" class="com.dowebber.spring.aop.UserDaoBeforeAdvice"></bean>  
    <!--配置spring自动生成代理对象所需要的一些参数 -->  
    <bean id="userdaoproxy" class="org.springframework.aop.framework.ProxyFactoryBean">  
    <property name="proxyInterfaces" value="com.dowebber.spring.aop.UserDao"/>  
    <property name="target">  
      <ref bean="userdao"/>  
    </property>  
    <property name="interceptorNames">  
      <list>  
       <value>beforeadvice</value>  
      </list>  
    </property>  
    </bean>  


    测试类: 

    Java代码 
    import org.springframework.context.ApplicationContext;   
    import org.springframework.context.support.ClassPathXmlApplicationContext;   
      
    public class TestUserDaoBeforeDevice {   
      
    public static void main(String[] args) {   
         
      ApplicationContext context = new ClassPathXmlApplicationContext("com/dowebber/spring/aop/spring.xml");   
      UserDao dao = (UserDao)context.getBean("userdaoproxy");   
      dao.addUser();   
    }   
      

  • 相关阅读:
    OpenStack Trail 部署文档(二)基础服务部署
    OpenStack Trail 部署文档(一)环境规划
    OpenStack Trail 部署文档
    配置kubectl在Mac(本地)远程连接Kubernetes集群
    elasticsearch*3 + Es-Head + kibana Docker集群
    Flex 布局教程:语法篇
    PHP 数组 array_merge 和 数组 + 加号操作的区别
    Redis分布式锁
    Mysql中Exists和In的使用
    让PHP7达到最高性能的几个Tips
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/4378970.html
Copyright © 2011-2022 走看看