码迷,mamicode.com
首页 > 编程语言 > 详细

SpringAop_静态代理模式

时间:2015-11-02 23:09:56      阅读:533      评论:0      收藏:0      [点我收藏+]

标签:

package com.spring.proxy;

public interface PersonDao {
    public void savePerson();

}



package com.spring.proxy;

public class PersonDaoImpl implements PersonDao {

    @Override
    public void savePerson() {
        
        System.out.println("save person");

    }

}




package com.spring.proxy;

public class Transaction {
    
    public void beginTransaction(){
        
        System.out.println("begin transcation");
    }
    
    public void commit(){
        
        System.out.println("commit");
    }

}


代理类
package com.spring.proxy;

public class personDaoProxy implements PersonDao {

    private PersonDao personDao;
    private Transaction transaction;
    
    
    public personDaoProxy(PersonDao personDao,Transaction transaction) {
        super();
        this.personDao = personDao;
        this.transaction=transaction;
    }


    /**
     * 由于该静态代理实现了PersonDao,所以每个方法都会执行开启事务提交事务,并没有做到事务的重用
     * 
     */
    @Override
    public void savePerson() {
        transaction.beginTransaction();
        personDao.savePerson();
        transaction.commit();
    }

}



package com.spring.proxy;

import org.junit.Test;

public class ProxyTest {
    
    @Test
    public void tsst(){
        
        PersonDao personDao=new PersonDaoImpl();
        Transaction transaction=new Transaction();
        personDaoProxy personDaoProxy=new personDaoProxy(personDao, transaction);
        personDaoProxy.savePerson();
        
    }

}

 

1.静态代理并没有做到事务的重用
2.假设dao层有100个类,需要有100个proxy,接口中有多少方法,在proxy层就得实现多少方法,有多少方法就要开起和提交多少事务
3.如果一个proxy实现了多个接口,其中的一个接口发生变化(添加了一个方法),那么proxy也要做相应的改变

 

SpringAop_静态代理模式

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/4931600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!