当前位置: 首页 > news >正文

天水模板型网站建设成都网站建设cdajcx

天水模板型网站建设,成都网站建设cdajcx,网站怎么推广怎么做的,活动列表 wordpress一、 反射 反射是在程序运行状态下#xff0c;动态获取类的结构#xff08;属性#xff0c;构造器#xff0c;方法#xff0c;注解#xff09;#xff0c;动态的创建类对象然后调用类中的属性方法。反射的起源Class#xff0c;Class中包含类反射要使用的API 获取Class的…            一、 反射 反射是在程序运行状态下动态获取类的结构属性构造器方法注解动态的创建类对象然后调用类中的属性方法。反射的起源ClassClass中包含类反射要使用的API 获取Class的方法 public class Student{private Integer sId;private String sName;private Integer getsId() {return sId;}private void setsId(Integer sId) {this.sId sId;}private String getsName() {return sName;}private void setsName(String sName) {this.sName sName;}public Student(Integer sId, String sName) {this.sId sId;this.sName sName;} } 反射的方法      0)  获取类类型 对象                ClassStudent stu  Student.class        0.5获取类 对象                  Student      stuObj        stu.new Instance()  //默认获取无参构造方法                  等价于                 Student     stuObj       stu.getConstructor().new Instance()      1获取属性                   Field     sName   stu.getDeclaredFieldsName                                 sName.setAccessible(true)                   Field     sId  stu.getDeclaredField(sId)                                 sId.setAccessible(true)                 属性设置值                         sName.set(stuObj,张三)                         sId.set(stuObj,1)      2获取方法           Method  getsId       stu.getMethod(getsId)           getsId.invoke(stuObj)      3)   获取构造方法           Constructor c         stu.getConstructor(Integer.class,String.class)              Student s   c.new Instance(1,张三) 注意事项         反射获取方法构造方法属性方法中 方法名都有加Declared 与 不加Declared。 不加Declared能够获取父子类中所有public修饰的方法 追加Declared能够获取当前类中所有修饰符的方法 二类加载 方法区放置读取的.class文件 堆区放置class文件生成的class对象 类加载的过程 1转载查找并加载class文件 2链接 验证验证字节码文件是否符合JVM规范。 准备为类的静态变量分配内存初始化化默认值 解析类中的符号引用转换为直接引用 3初始化为类的静态变量赋予正确的初始值 三Proxy  代理模式 Spring 框架 IOC控制反转把项目javabean对象的创建以继生命周期交给spring框架管理 需要使用bean对象时直接从Spring容器bean对象的容器中获取。 利用java的反射实例化bean对象 AOP面向切面编程两种动态代理实现                 jdk动态代理实现接口                 cglib动态代理单独的类没有实现接口 在不修改源代码的情况下扩展功能 静态代理 目标对象执行类中方法 代理对象代理对象中包含目标对象调用执行对象时可以额外添加功能 注意静态代理是提前写死的.class文件并且两个对象类实现同一个接口。跟接口耦合性太高改动麻烦。 动态代理 jdk动态代理 实现InvocationHandler接口重写invoke方法 1第一种方式 直接调用invoke方法           我们在其中内置一个Object对象用来实现对目标方法的调用 public class SqlsessionutilProxyJDK implements InvocationHandler {private Object obj; //代表目标对象Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {String name method.getName();if (get.startsWith(name)||select.startsWith(name)){Object invoke method.invoke(obj, args);return invoke;}else {try {SqlSession session SqlSessionUtil.getSession();Object invoke method.invoke(obj, args);session.commit();return invoke;} catch (Exception e) {SqlSessionUtil.rollbackSession();throw new RuntimeException(e);}}} }    在Test类中               SqlsessionutilProxyJDK sqlsessionutilProxyJDK new SqlsessionutilProxyJDK(); Object[] objects {2,在职}; EmpService o (EmpService) Proxy.newProxyInstance(new         EmpServiceImpl().getClass().getClassLoader(), new         EmpServiceImpl().getClass().getInterfaces(), new EmpServiceProxyJDK()); Method set new EmpServiceImpl().getClass().getMethod(set, Integer.class, String.class); sqlsessionutilProxyJDK.setObj(new EmpServiceImpl()); sqlsessionutilProxyJDK.invoke(o, set, objects);2简化方式调用代理对象的相应方法 public class SqlsessionutilProxyJDK implements InvocationHandler {private Object obj;public void setObj(Object obj) {this.obj obj;}public Object proxyInstance(Object obj){this.obj obj;Object o Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);return o;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {String name method.getName();if (get.startsWith(name)||select.startsWith(name)){Object invoke method.invoke(obj, args);return invoke;}else {try {SqlSession session SqlSessionUtil.getSession();Object invoke method.invoke(obj, args);session.commit();return invoke;} catch (Exception e) {SqlSessionUtil.rollbackSession();throw new RuntimeException(e);}}} } 在Test类中 cglib代理      针对没有接口的类实现代理实质上是创建这个类的子类子类对象是代理对象这个类对象是目标对象 需要在pom文件中引入第三方jar包  。如果在普通的java项目中还需要有该jar包对应的依赖但在Maven中会自动添加该jar包的依赖。 !-- cglib--dependencygroupIdcglib/groupIdartifactIdcglib/artifactIdversion3.2.12/version/dependency public class CGLIBProxy implements MethodInterceptor {public Object getProxyInstance(Object obj){Enhancer enhancer new Enhancer();enhancer.setSuperclass(obj.getClass());enhancer.setCallback(this);return enhancer.create();}Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println(执行拓展功能);Object o1 methodProxy.invokeSuper(o, objects);return o1;} }    在测试类中
http://www.pierceye.com/news/353721/

相关文章:

  • 电子网址怎么创建下载优化大师app
  • 网站上传服务器教程wordpress 开启多用户
  • 做网站的公司重庆互联网营销方式
  • 在线探测网站开发语言东莞人才市场现场招聘会地址
  • 检测网站是否被挂黑链seo网站营销推广
  • 当今网站开发技术的现状自己做的网站怎么上排行榜
  • 外贸没有公司 如何做企业网站?成都市住房和城乡建设局官网查询
  • 公证网站建设管理无锡百度正规推广
  • 免费海外网站建设自学设计软件的免费网站
  • 个人姓名最多备案多少个网站外贸网站制作公司
  • 上海市建设安全协会官方网站上海人才网官网公示
  • 原创文章网站wordpress注册页面修改密码
  • 山东省建设注册执业中心网站博物馆网站做的最好的
  • 做论坛网站能赚钱吗山东济南网站建设公司
  • 建网站海外英文建站
  • 学网站开发网页制作苏州模板建站哪家好
  • 音乐网站建设怎么上传音乐易点租电脑租赁官网
  • 做足球网站前景一个网站源码值多少钱
  • 成都网站排名优化公司上海创意网站建设
  • 贵阳市住房城乡建设局八大员网站wordpress 输出 文章时间
  • 那个装修公司的网站做的好想创业去哪里找项目
  • 公选课网页制作与网站建设网页游戏平台十大排名
  • 无锡锡牛网站建设网站倒计时
  • 南通做外贸网站网站建设培训四川
  • 微小店适合卖做分类网站吗手机开发者网站
  • 广州建企业网站网页设计是啥意思
  • wap手机网站建设刀模 东莞网站建设
  • 怎样做网站的外链做推广优化的网站有哪些内容
  • 永嘉规划建设局网站备案个人网站做淘宝客
  • 枣庄网站建设电话网站怎么做 凡科