• 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();   
    }   
      

  • 相关阅读:
    spring 事务传播说明
    Python 之 plt.rcParams[]
    三维函数的可视化 密度图和等高线图
    matplotlib.pyplot contourf()函数的使用
    matplotlib 中添加参考区, axhspan() 函数和 axvspan() 函数
    matplotlib 中修改图例中的标记符显示数量
    matplotlib 的点线样式
    Serif 和 Sans-serif 字体的区别
    用柱状图体验 pyecharts 的不同主题样式
    下载连接
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/4378970.html
Copyright © 2020-2023  润新知