Java 动态代理

1、代理模式

      目标对象不能直接访问,通过代理对象增强功能访问。代理模式是指为其他对象提供一种代理以控制对这个对象的访问

  静态代理:1、目标对象和代理对象实现同一个业务接口;2、目标对象必须实现接口;3、代理对象在程序运行前就已经存在;能够灵活的对目标对象进行切换,却无法进行功能的灵活切换;

 静态代理的实现:

     业务功能:请明星进行节目表演

    明星刘德华:目标对象(无法直接访问)

   刘德华助理:代理对象

  我们:客户对象

面向接口编程(重要)

    类中的成员变量设计为接口,方法的形参设计为接口,方法的返回值设计为接口,调用时接口指向实现类

//有接口和实现类,必须用接口指向实现类(规范)

面向接口编程:调用时实现,接口指向实现类

7、动态代理

  代理对象在程序运行中动态在内存中构建,可以灵活地进行业务功能的切换

8、JDK动态代理

   1)目标对象实现业务接口

  2)代理对象不用实现业务接口

3)动态代理在运行前不存在,运行时在内存中构建

 4)JDK动态代理灵活的进行业务切换

9、JDK动态代理用到的实现类和接口

  它是使用现在的工具类完成JDK动态实现

1)proxy类

   它是java.lang.reflect.proxy包下的类,他有一个方法proxy.newProxyInstance(。。。。)

专门用来生成动态代理对象。

public static Object newProxyInstance(ClassLoader loader//类加载器

,Class<?>  interfaces,//目标对象实现的所有接口

InvocationHandler h//它就类似于Agent切换的功能,代理的功能和目标对象的业务功能调用在这

throws  ILLegalArgumentException

)

2)类

   发射用的类,用来目标对象的方法反射和调用

method对象接住我们正在调用的方法sing(),show()

method==sing(),show()

  动态代理:jdk动态代理、CGLIB动态代理

10、动态代理存在的意义

   在三层架构中,业务逻辑层通过接口访问层访问数据访问层的功能,动态代理可以实现

动态代理的实现规范

  1、UserMapper.xml文件与UserMapper.java的接口必须同一个目录下

  2、UserMapper.xml文件与UserMapper.java的接口文件名必须一致,后缀不管

 3、  UserMapper.xml文件中的id与UserMapper.java的接口中的方法名称必须一致;

 4、  UserMapper.xml文件中标签的parameterType属性值与UserMapper.java的接口中方法参数类型完全一致;

 5、  UserMapper.xml文件中标签的resultType值与UserMapper.java的接口中方法返回值类型不一致;

 6、  UserMapper.xml文件中的namespace属性必须是接口的完全限定名称.com.bjpowernode.mapper.UserMapper

 7、在sqlMapconfig.xml文件中注册mapper文件时使用class=接口的完全限定名称com.bjpowernode.mapper.UsersMapper

11、动态代理访问的步骤

 1)建表Users

2)新建的Maven工程,刷新可视化

3)修改目录

4)修改pom.xml

5)添加jdbc.propertis文件添加到resources目录下

6)添加sqlconfig.xml文件

7)添加实体类

8)添加mapper文件,新建UserMapper接口

9)在mapper文件夹下,新建UsersMapper.xml,完成增删改查功能

10)添加测试类测试功能

13#{}占位符

  传参大部分使用#{}传参,它的底层使用的是PreParedStatement对象,是安全的数据库访问,防止sql注入,#{}里如何写,看parameterType参数的类型

    1)如果parameterType的类型是简单类型(8种基本封装+String),则#{}里随便写,

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值