JDK静态代理示例代码

  1. 业务接口
  2. 接口的实现类
  3. 代理类,实现接口,并扩展实现类的功能

1、业务接口

/**
* 业务接口
* @author pc
*
*/
public interface UserService {
// 增加一个用户
public void addUser();
// 编辑账户
public void editUser();
}

2、业务实现类

 /**
* 业务实现类
* @author pc
*
*/
public class UserServiceImpl implements UserService { public void addUser() {
System.out.println("增加一个用户。。。");
} public void editUser() {
System.out.println("编辑一个用户。。。");
} }

3、代理类(实现业务接口,并实例化业务实现类)

 /**
* 代理类
*
* @author pc
*
*/
public class UserServiceProxy implements UserService { private UserServiceImpl userImpl; public UserServiceProxy(UserServiceImpl countImpl) {
this.userImpl = countImpl;
} public void addUser() {
System.out.println("代理类方法,进行了增强。。。");
System.out.println("事务开始。。。");
// 调用委托类的方法;
userImpl.addUser();
System.out.println("处理结束。。。");
} public void editUser() {
System.out.println("代理类方法,进行了增强。。。");
System.out.println("事务开始。。。");
// 调用委托类的方法;
userImpl.editUser();
System.out.println("事务结束。。。");
} }

4、测试类

 public static void main(String[] args) {
UserServiceImpl userImpl = new UserServiceImpl();
UserServiceProxy proxy = new UserServiceProxy(userImpl);
proxy.addUser();
System.out.println("----------分割线----------");
proxy.editUser();
}

5、结果

 代理类方法,进行了增强。。。
事务开始。。。
增加一个用户。。。
处理结束。。。
----------分割线----------
代理类方法,进行了增强。。。
事务开始。。。
编辑一个用户。。。
事务结束。。。

JDK静态代理示例代码的更多相关文章

  1. Java代理(jdk静态代理、动态代理和cglib动态代理)

    一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 /** * 业务接 ...

  2. [z]Java代理(jdk静态代理、动态代理和cglib动态代理)

    一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 1 2 3 4 5 ...

  3. Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)

    一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道.如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法. ...

  4. SSH 前言(JDK静态代理和动态代理)

    代理模式:代理模式是为了增强目标对象 代理分静态代理和动态代理 静态代理逻辑是:比如定义一个ISomeService接口,接口里面有一个输出doSecond()的方法,然后目标类SomeService ...

  5. cglib代理与jdk动态代理示例

    先看基于jdk实现的动态代理实现例子 1.先声明一个接口类 public interface UserService{ public String getName(String msg); } 2.实 ...

  6. JDK动态代理Demo代码,进一步学习分析

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...

  7. 静态代理和利用反射形成的动态代理(JDK动态代理)

    代理模式 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 静态代理 1.新建 ...

  8. java的静态代理和动态代理(jdk、cglib)

    一.代理模式 代理的概念来自于设计模式中的代理模式,先了解一下代理模式 1.结构图 2.参与者 Subject:接口,定义代理类和实际类的共用接口 RealSubject:实际类,实现Subject这 ...

  9. Java代理(静态代理、JDK动态代理、CGLIB动态代理)

    Java中代理有静态代理和动态代理.静态代理的代理关系在编译时就确定了,而动态代理的代理关系是在运行期确定的.静态代理实现简单,适合于代理类较少且确定的情况,而动态代理则给我们提供了更大的灵活性. J ...

随机推荐

  1. Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量

    Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...

  2. oracle用户 密码永不过期

    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

  3. Informatica存储库和集成服务的配置

    1.配置存储库 首先登陆informatica的管理界面: 这里的用户名不区分大小写(注意后面配置集成服务是区分的,后面会提到)

  4. js控制easyui datagrid列的显示和隐藏

    easyui datagrid 列隐藏和显示 $('#grid').datagrid('hideColumn','列field'); //把hideColumn换成showColumn 即为显示列

  5. 关于poi操作excel我使用的一些修饰操作

    被这情况恶心了.我的excel默认为常规,然后写入数字就成类似number类型,获取值得到的是double类型,2变成2.0.号码变成科学计数法. 做功能找了一段时间,保存下来防止忘记下次浪费时间. ...

  6. asp.net textbox等服务器控件包含html代码的时候,提交会报错

    asp.net  textbox等服务器控件包含html代码的时候,提交会报错,页面中的其他按钮点击的时候也会报错误, 解决方法: Page里加上这个属性 ValidateRequest=" ...

  7. C++可调用对象与函数表

    c++的可调用对象 有 函数 函数指针 lambda表达式 bind的对象 重载了函数调用运算符的类 如何调用? 函数调用 void afuncToCall() { cout << &qu ...

  8. POJ1651 Multiplication Puzzle【区间DP】

    LINK 每次删除一个数,代价是左右两边相邻的数的当前数的积 第一个和最后一个数不能删除 问最后只剩下第一个数的最后一个数的最小代价 思路 很简单的DP 正着考虑没有办法确定两边的数 那么就把每个区间 ...

  9. Oracle:"ORA-00942: 表或视图不存在"

    情景 项目中使用Powerdesigner设计数据结构,在Powerdesigner中数据表和字段都区分了大小写,并生成了Oracle表,在执行Sql脚本时遇到以下问题:“ORA-00942: 表或视 ...

  10. vue+webpack多个项目共用组件动态打包单个项目

    原文复制:https://www.jianshu.com/p/fa19a07b1496 修改了一些东西,因为sh脚本不能再window电脑执行,所以改成了node脚本.这是基于vue-cli2.0配置 ...