标签:
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也要做相应的改变
标签:
原文地址:http://www.cnblogs.com/thinkpad/p/4931600.html