动态代理
来源:互联网 发布:淘宝酷动城怎么加入 编辑:程序博客网 时间:2024/05/21 08:01
private String name;
private Integer id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Person(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Person() {
}
@Override
public String toString() {
return "Person [name=" + name + ", id=" + id + "]";
}
}
//抽象接口
public interface Service {
void add(Person person);
void delete(Integer id);
void update(Person person);
}
//服务类
public class ServiceI implements Service {
private static Map<Integer,Person> persons
=new HashMap<Integer, Person>();
public static Map<Integer, Person> getpersons() {
return persons;
}
public ServiceI() {
persons.put(1, new Person(1001, "aaa"));
persons.put(2, new Person(1002, "bbb"));
}
@Override
public void add(Person person) {
persons.put(person.getId(), person);
}
@Override
public void delete(Integer id) {
if (id==1) {
throw new RuntimeException("1不能被成删除");
}
persons.remove(id);
}
@Override
public void update(Person person) {
persons.put(person.getId(), person);
}
}
//代理类
public class PersonServiceProxy {
private Service target=null;
public PersonServiceProxy (Service target) {
this.target=target;
}
public Service getPersonServiceProxy() {
Service proxy=(Service) Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("开启事物");
try {
Object result=method.invoke(target, args);
System.out.println("提交事务");
return result;
} catch (Exception e) {
e.printStackTrace();
System.out.println("事物回滚");
}
return null;
}
});
return proxy;
}
}
测试类
public class TestProxyTest {
@Test
public void testPersonService() {
Service target=new ServiceI();
Service proxy=new PersonServiceProxy(target).getPersonServiceProxy();
System.out.println(ServiceI.getpersons());
proxy.add(new Person(1005, "ccc"));
System.out.println(ServiceI.getpersons());
proxy.delete(1);
System.out.println(ServiceI.getpersons());
}
}
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- Openstack Ice-House 版本说明--之一 NOVA
- 省赛组队赛5
- 计算机专业学习浅谈
- 项目最重要的环节:写文档
- 数据库设计:规范化设计
- 动态代理
- 深入浅出交换类排序算法
- Android NFC 学习笔记与总结
- adb error:错误
- 并查集
- MapReduce编程实战之“高级特性”
- 字符编码笔记:ASCII,Unicode和UTF-8
- 深入分析 Java 中的中文编码问题
- 配置git服务器