如何建立公司网站链接手机立体房屋设计软件

web/2025/10/1 23:17:32/文章来源:
如何建立公司网站链接,手机立体房屋设计软件,jsp网站购买空间,汕头h5建站模板spring和spring在初始化应用程序上下文时#xff0c;Spring在遇到带有Transactional标记的类时会创建代理。 Transactional可以应用于类级别或方法级别。 在类级别应用它意味着该类中定义的所有公共方法都是事务性的。 Spring创建的代理类型#xff0c;即Jdk代理或CGLIB代理Spring在遇到带有Transactional标记的类时会创建代理。 Transactional可以应用于类级别或方法级别。 在类级别应用它意味着该类中定义的所有公共方法都是事务性的。 Spring创建的代理类型即Jdk代理或CGLIB代理取决于将方法标记为事务性的类。 如果该类实现了至少一个接口则Spring将创建一个Jdk动态代理。 该代理实现与原始类相同的接口并使用事务维护逻辑拦截接口方法。 它将调用委托给其中组成的原始对象。 假设该类未实现任何接口Spring将创建一个CGLIB代理。 该代理扩展了原始类并覆盖了公共方法。 我们将尽快对此进行仔细研究。 假设我们有一个这样定义的类 public interface BookDao{void buyBook(String isbn) throws BookNotFoundException;Book findByIsbn(String isbn);int deductStock(Book book); }public class JdbcBookDao implements BookDao{void buyBook(String isbn) throws BookNotFoundException{Book book findByIsbn(isbn);if(book null){throw new BookNotFoundException();}deductStock(book);}Transactional(propagationPropagation.REQUIRES_NEW)Book findByIsbn(String isbn){Book book getJdbcTemplate().queryForObject(SELECT * FROM BOOK WHERE ISBN?,ParameterizedBeanPropertyRowMapper.newInstance(Book.class), isbn);return book;}Transactional(propagationPropagation.REQUIRES_NEW)int deductStock(Book book){String sql UPDATE BOOK_STOCK SET STOCKSTOCK-1 WHERE BOOK_ID?;return getJdbcTemplate().update(sql, stockIncrement, book.getId());} } 现在Spring是否会通过从main方法调用bookDao的findByIsbn自动创建交易 否。我们必须在xml配置中声明这一点 tx:annotation-driven 因此如果它不创建事务是否会引发错误 答案还是不是。Spring非事务地执行此语句。 正如我们所期望的那样一旦声明了‹txannotation-driven›Spring将在该类实现接口时为JdbcBookDao创建一个Jdk动态代理。 现在说我们调用JdbcBookDao的buyBook方法Spring创建了多少个事务 二1用于findByIsbn另外1用于deductStock。 一在同一笔交易中同时找到findByIsbn和deductStock。 完全没有交易 答案是3。 交易的默认交易模式为“代理”。 这意味着Spring仅考虑通过代理进行的方法调用进行自动事务管理。 现在如果您仔细观察buyBook方法不会标记为事务性的。 因此当创建事务代理时该方法不会被事务管理逻辑拦截因为它未标记为Transactional。 简而言之buyBook不会在代理中被覆盖。 因此该方法直接在原始对象上调用。 因此其他两个方法也将在原始对象上调用。 请记住只有PROXY包含事务管理代码。 因此当其他方法也被原始对象调用时Spring根本不会创建事务。 现在如果我们将buyBook标记为Transactional是否可以解决问题 Spring是否会为每个findByIsbn和deductStock方法创建两个单独的事务 不会。调用buyBook时Spring仅创建一个事务。 由于不会在原始对象本身而不是代理上调用各个方法因此不会进一步创建任何新事务。 那么如何解决这个问题呢 我们可以要求Spring创建一个CGLIB proxy吗 现在由于代理是具有重写的公共事务方法的子类因此它为每个方法调用创建一个新事务 再次没有。 CGLIB代理不会直接在超类上调用该方法。 这是如何实现的粗略想法。 import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method;public class MyInterceptor implements MethodInterceptor {private Object realObject;public MyInterceptor(Object original) {this.realObject original;}// This method will be called every time the object proxy calls any of its methodspublic Object intercept(Object o, Method method, Object[] args,MethodProxy methodProxy) throws Throwable {/*** Transaction Management Code*/// Invoke the method on the real object with the given paramsObject res method.invoke(realObject, args);/*** Transaction Management Code*/return res;} }import net.sf.cglib.proxy.Enhancer;public class ProxyCreator(){public static T createProxy(T original){// Enhancer is CGLIB class which builds a dynamic proxy with new capabilitiesEnhancer e new Enhancer();e.setSuperclass(original.getClass());// We have to declare the interceptor whose intercept will be called when methods are called on proxy.e.setCallback(new MyInterceptor(original));T proxy (T) e.create();return proxy;} } 因此正如您在此处看到的代理扩展了原始类并由其对象组成。 因此当我们调用buyBook时代理会创建一个事务并将该调用委托给原始对象。 从原始对象的buyBook中调用findByIsbn和deductStock不会因此不会创建新的交易。 一个快速的周转解决方案是因为JdbcBookDao是一个单例请从应用程序上下文中获取此对象。 现在与其直接在对象上调用方法不如使用引用来调用它以确保调用代理这就是方法的外观。 public class JdbcBookDao implements BookDao, ApplicationContextAware{private ApplicationContext context;private BookDao bookDao;public void setApplicationContext(ApplicationContext context){this.context context;}public BookDao getBookDao(){bookDao (BookDao)context.getBean(jdbcBookDao);}void buyBook(String isbn) throws BookNotFoundException{Book book getBookDao().findByIsbn(isbn);if(book null){throw new BookNotFoundException();}getBookDao().deductStock(book);}..... } 刚刚实施了一个粗略的版本来使它正常工作。 我们绝对可以改进它的设计方式。 代替将应用程序上下文直接注入到DAO中可能是我们可以使用一种辅助类来做到这一点。 或者完成此任务的另一种方法是使用程序化事务。 最后要注意的一点是Spring仅在将公共方法标记为事务性时才管理事务。 对于私有受保护和程序包私有的方法Spring不提供事务管理支持。 对于动态代理当它们实现接口时所有事务处理方法都是公共的。 因此无需担心非公开方法。 对于CGLIB代理在创建子类时仅重写公共方法。 因此即使在这里也不会考虑非公开方法。 让我以一个问题结束这次讨论。 当我尝试使用‹txannotation-driven proxy-target-class ” true” /›代理目标类时它实际上不起作用即未创建CGLIB代理 。 为此我必须进行一些小改动。 正如Spring文档明确指出的那样如果在‹txannotation驱动的›‹aopconfig›或‹aopaspectj-autoproxy›中的任何一个上启用了代理目标类Spring将在容器上启用CGLIB代理创建。 因此我只创建了一个空的‹aopconfig proxy-target-class “ true” /›。 不用担心它开始起作用 不知道这是否是Spring本身的错误。 高度赞赏如果有人可以回答这个问题。 参考 Spring交易可见性来自prasanthnath博客上的JCG合作伙伴 Prasanth Gullapalli。 翻译自: https://www.javacodegeeks.com/2013/11/spring-transactions-visibility.htmlspring和spring

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

办公门户网站模板自己做soho需要做网站吗

目录 提交验证 声明规则 特殊验证 一个特殊验证的示例 内联验证器 一个完整示例 参考文档 提交验证 根据经验,您永远不应该相信从最终用户那里收到的数据,并且应该在很好地使用这些数据之前对其进行验证。 给定一个model模型,用户输入填…

装饰公司东莞网站建设淄博阿雷网站建设

文章目录 Copy和FetchFile模块 Copy和Fetch copy和fetch模块实践 copy模块需要注意的点:在收集日志之前需要对文件先进行改名或者备份fetch模块需要注意的点:复制的源文件的路径必须是文件不能是目录建议全部使用绝对路径,别使用相对路径确保…

社区网站建设难点关键词带淘宝的网站不收录

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 🔐#### 防伪水印——左手の明天 ####🔐 💗 大家…

网站选择理由描述收录软件最多的网站

实景三维技术作为一种新兴的技术手段,正在逐渐被认为是一种新质生产力。它通过高精度的数据采集、处理和可视化,为多个行业领域提供了全新的工作方式和解决方案,从而推动了生产力的发展和创新。以下是实景三维技术作为新质生产力在不同方面的…

低价代网站淘宝客模板 wordpress

解决zblog博客Gravatar头像不显示方法一第一个,解决zblog博客Gravatar头像不显示解决方法是对其进行修复操作。造成不显示的原因主要是Gravatar头像地址错误。所以,我们需要对头像地址进行更改。1、进入自己的博客后台。2、找到现在使用的主题模板中的&a…

口碑好的企业网站建设东莞万江今天最新通知

使用 django.utils.translation.gettext_lazy() 函数,使得其中的值只有在访问时才会被翻译,而不是在 gettext_lazy() 被调用时翻译。例如:要翻译一个模型的 help_text,按以下进行:from django.utils.translation impor…

英雄联盟视频网站源码织梦模板修改网站颜色

121. 买卖股票的最佳时机 股票只能被买卖一次 dp[i][0] 持有股票所得到的最大现金, dp[i][1] 不持有股票所得的最大现金, 避免定义多个变量递推公式: dp[i][0] 可能是在之前买入, 也可能是在这次被买入 max(dp[i - 1][0],-prices[i])dp[i][1] 可能是在本次抛售, 也可能在之…

自适应网站模板怎么做做期货要看哪些网站

前端数据层高可用架构 前后端架构模式如下图 在这个架构下,客端数据可用率计算方式: 因此整体数据可用性分析表如下: 只有在客端和 BFF 都正常的情况下数据才能可用,而这种情况占比不是很高,因此整体的用户体验就不是很好。 本次建设目标 本文的设计方案就是要解决…

合肥企业网站建设软件产品如何做网站推广

一、说明 每天,人类在执行诸如过马路之类的任务时都会做出被动预测,他们估计汽车的速度和与汽车的距离,或者通过猜测球的速度并相应地定位手来接球。这些技能是通过经验和实践获得的。然而,由于涉及众多变量,预测天气或…

手机网站模板代码柳江企业网站建设公司

目录 一.准备工作 二.编写各个组件的页面结构 三.实现初始任务列表的渲染 四.新增任务 五.删除任务 六.展示未完成条数 七.切换状态-筛选数据 八.待办事项(全)代码 一.准备工作 在开发“ToDoList”案例之前,需要先完成一些准备工作&a…

电子商务网站开发难点西安外包网络推广

1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。数据库开启事务命令•start transaction开启事务•Rollback回滚事务•Commit提交事务JDBC控制事务语句•Connection.setAutoCommit(false); //start transa…

西宁网站seo价格白石洲附近做网站公司

目录 问题: 使用的代码: 官方文档的说明: 可能的问题所在: 关于使用了作用域插槽: a.自定义内容的样式覆盖: b.表格结构的改变: 解决方案: 通过css样式解决: 下面…

苏州企业网站建设制作方案开发公司注销时剩余未售房产如何处理

linux服务器怎么创建用户 在Linux服务器上,可以使用以下步骤创建用户: 使用adduser命令创建新用户: sudo adduser username将 username 替换为你要创建的用户名。这个命令会提示你输入新用户的密码以及其他相关信息。 如果需要为新用户设…

绵阳汽车网站制作wordpress转服务器

1.一个汉字在存储时,占据( )个字节的存储空间。 A.1 B.2 C.4 D.3 错误 正确答案:左边查询 学生答案:A 2.学习好Office办公软件这门课程,应该( )。 A.可以随便学习一下 B.只看不练 C.…

代理企业网站备案盐城网站app建设

这是您请求的故宫雪景图,角落有一只可爱的胖猫,采用了水墨画风格,类似于张大千的作品。希望您喜欢这幅画! 🎨 选项 1【转变风格】——将这幅画转变为梵高的后印象派风格,增添一些梵高特有的笔触和色彩。 &…

手机建个人网站免费word模板

Hittest 机制原理 hitTest的原理就是,当我们点击的时候,会触发 window的 hittest方法,在该方法中会首先使用point inside方法判断 点击的地方是否在window范围内,如果在的话,就倒序遍历姿子视图,然后将poi…

有没有好用的网站推荐站点推广策略包括

一.LCR 152. 验证二叉搜索树的后序遍历序列 题目描述: 给你一个二叉搜索树的后续遍历序列,让你判断该序列是否合法。 解题思路: 根据二叉搜索树的特性,二叉树搜索的每一个结点,大于左子树,小于右子树。…

免费的网站软件南昌建设银行网站

Escape Simulator 是一款逃生模拟游戏,玩家在游戏中需要寻找线索、解决谜题,以逃离各种房间或环境。这种类型的游戏通常设计有多个关卡或场景,每个场景都有不同的设计和难度。 在 Escape Simulator 中,玩家的目标通常是找到出口或…

天河高端网站建设在线课堂网站开发

文章目录 前言add_item_to_object函数是干什么的add_item_to_object代码解析函数实现函数原理解析开头的代码constant_key参数的作用最后的if判断 add_item_to_array函数 总结 前言 在我们的日常编程中,JSON已经成为了一种非常常见的数据交换格式。在C语言中&#…

怎么注册网站可视化网站制作软件

一、引言 随着前端技术的飞速发展,企业对于官网的需求也从简单的展示型网站向功能丰富、交互体验良好的方向转变。在这样的背景下,图鸟模板-官网以其基于Vue 3的纯前端开发特性,以及支持微信小程序、支付宝小程序、APP和H5的跨平台能力&…