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

丹阳网站建设机构新氧网站头图怎么做的

丹阳网站建设机构,新氧网站头图怎么做的,义乌系统开发,网站头部修改JDK动态代理(tedu)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87546187 目录JDK动态代理(tedu)(内含源代码)源代码下载链接…

JDK动态代理(tedu)(内含源代码)

源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87546187

目录

  • JDK动态代理(tedu)(内含源代码)
  • `源代码下载链接地址:`[https://download.csdn.net/download/weixin_46411355/87546187](https://download.csdn.net/download/weixin_46411355/87546187)
    • 一、创建一个SpringBoot项目
    • 二、配置类
    • 三、service层
      • 3.1 接口类
      • 3.2 实现类
    • 四、JDK动态代理,根据目标类获取代理类的方法
    • 五、测试类
    • 六、测试结果
    • 问题:为什么 System.out.println(proxy);会打印事务开始和事务提交?

一、创建一个SpringBoot项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、配置类

SpringConfig

package com.tedu.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@ComponentScan("com.tedu")
@Configuration
public class SpringConfig {}

三、service层

3.1 接口类

UserService

package com.tedu.service;public interface UserService {void addUser();void deleteUser();
}

3.2 实现类

package com.tedu.service;import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService{@Overridepublic void addUser() {System.out.println("完成用户新增");}@Overridepublic void deleteUser() {System.out.println("完成用户删除");}
}

四、JDK动态代理,根据目标类获取代理类的方法

package com.tedu.proxy;import com.sun.corba.se.spi.ior.ObjectKey;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class JDKProxy {public static Object getProxy(Object target){//1.获取类加载器ClassLoader classLoader = target.getClass().getClassLoader();//2.获取接口Class<?>[] interfaces = target.getClass().getInterfaces();//通过代理的类新创建一个代理的对象return Proxy.newProxyInstance(classLoader, interfaces, getInvocationHandler(target));}//代理对象执行方法是调用public static InvocationHandler getInvocationHandler(Object target){//这些代码都是写死的return new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("======================事务开始=============================");//执行目标(真实对象的方法)Object result = method.invoke(target, args);System.out.println("==========================事务提交============================");return result;}};}}

五、测试类

package com.tedu.test;import com.tedu.config.SpringConfig;
import com.tedu.proxy.JDKProxy;
import com.tedu.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class SpringTx {public static void main(String[] args) {ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);UserService userService = applicationContext.getBean(UserService.class);System.out.println(userService.getClass());UserService proxy = (UserService)JDKProxy.getProxy(userService);System.out.println(proxy.getClass());System.out.println(proxy);System.out.println(proxy.toString());//基于代理对象,执行业务操作 实现方法扩展proxy.addUser();proxy.deleteUser();}
}

六、测试结果

在这里插入图片描述

问题:为什么 System.out.println(proxy);会打印事务开始和事务提交?

因为System.out.println(proxy);默认等价于System.out.println(proxy.toString());虽然没有调用业务方法,但还是调用了目标对象的toString()方法,所以会出现事务开始和事务提交。

http://www.yayakq.cn/news/623796/

相关文章:

  • 建网站没有公司资质四川城乡与住房建设部网站
  • 网站策划就业前景网站购物车代码怎么做
  • 网站建设基本流程ppt广州海珠区好玩的地方
  • 北京工信部查网站备案上海最近新闻
  • 网站门户建设一个专门做字画的网站
  • 景区门户网站建设方案wordpress远程代码执行
  • 网站更换网址如何查找镇江群立网络科技有限公司
  • 怎么做钓鱼网站吗南宁网站建公司电话
  • 曲阜人网站网站首页建设图文教程
  • 企业网页制作与网站设计专门做图片是网站
  • 基于php的家具公司网站彩票网站做维护是什么
  • 哪些网站上可以做seo推广的网站空间到期了怎么办
  • 怎么注册网站免费的吗网页设计的技术有哪些
  • 网站建设合同附件wordpress 栏目排版
  • 南通优普网站建设优化招聘做网站专业人员
  • 机械网站怎么做去长沙旅游攻略
  • 网站自然排名怎么雄安做网站优化的公司
  • 网站建设项目设计表网站特效模板
  • 厦门定制网站建设公司网站建设工作总结
  • 英文网站案例网站合作建设方案
  • 网站推广的措施有哪些展厅设计的主题
  • 网站建设记录过程台前网站建设费用
  • 网站php源码岳阳网站设计u
  • 做网站需要资质吗wordpress 数据库更新
  • 营销型网站建设调查表湖北电商的网络推广
  • 百度权重10的网站泰州网站制作方案
  • 怎么做网站教程html文本文档网站制作报价
  • 网站建设大连秦时明月的个人网站怎么做
  • 东莞做网站需要避免这些因素南京网站建设 ww
  • 做app和网站哪个比较好苏州高端网站建设定制