使用 Spring Framework 时常犯的十大错误
不管是桌面应用照旧 Web 应用,无论是 Spring 照旧 No Spring,多线程都是很难破解的。由并行执行措施所引起的题目是令人不寒而栗且难以捉摸的,并且经常难以调试 —— 现实上,因为题目的本质,一旦你意识到你正在处理赏罚一个并行执行题目,你也许就不得不完全放弃调试器了,并 “手动” 搜查代码,直到找到基础上的错误缘故起因。不幸的是,这类题目并没有如出一辙的办理方案;按照详细场景来评估环境,然后从你以为最好的角度来办理题目。 虽然,抱负环境下,你也但愿完全停止多线程错误。同样,不存在那种一刀切的要领,但这有一些调试和防备多线程错误的现实思量身分: 5.1. 停止全局状态 起首,紧记 “全局状态” 题目。假如你正建设一个多线程应用,那么应该亲近存眷任何也许全局修改的内容,假如也许的话,将他们所有删掉。假如某个全局变量有必需保持可修改的缘故起因,请细心行使 synchronization,并对措施机能举办跟踪,以确定没有由于新引入的守候时刻而导致体系机能低落。 5.2. 停止可变性 这点直接来自于 函数式编程,而且合用于 OOP,声明应该停止类和状态的改变。简而言之,这意味着放弃 setter 要领,并在全部模子类上拥有私有的 final 字段。它们的值独一产生变革的时刻是在结构时代。这样,你可以确定不会呈现争用题目,且会见工具属性将始终提供正确的值。 5.3. 记录要害数据 评估你的措施也许会在那里产生非常,并预先记录全部要害数据。假如产生错误,你将很兴奋可以获得信息声名收到了哪些哀求,并可更好地相识你的应用措施为什么会呈现错误。必要再次留意的是,日记记录引入了特另外文件 I/O,也许会严峻影相应用的机能,因此请不要滥用日记。 5.4. 复用现存实现 每当你必要建设本身的线程时(譬喻:向差异的处事发出异步哀求),复用现有的安详确现来取代建设本身的办理方案。这在很洪流平上意味着要行使 ExecutorServices 和 Java 8 简捷的函数式 CompletableFutures 来建设线程。Spring 还应承通过 DeferredResult 类来举办异步哀求处理赏罚。 6. 常见错误六:不行使基于注解的验证 假设我们之前的 TopTalent 处事必要一个端点来添加新的 TopTalent。另外,假设基于某些缘故起因,每个新名词都必要为 10 个字符长度。执行此操纵的一种要领也许如下:
然而,上面的要领(除告终构很差以外)并不是一个真正 “干净” 的办理步伐。我们正搜查不止一种范例的有用性(即 TopTalentData 不得为空,TopTalentData.name 不得为空,且 TopTalentData.name 为 10 个字符长度),以及在数据无效时抛出非常。 通过在 Spring 中集成 Hibernate validator,数据校验可以更干净地举办。让我们起首重构 addTopTalent 要领来支持验证:
另外,我们还必需指出我们想要在 TopTalentData 类中验证什么属性:
此刻,Spring 将在挪用要领之前拦截其哀求并对参数举办验证 —— 无需行使特另外手工测试。 另一种实现沟通成果的要领是建设我们本身的注解。固然你凡是只在必要超出 Hibernate的内置束缚集 时才行使自界说注解,本例中,我们假设 @Length 不存在。你可以建设两个特另外类来验证字符串长度,一个用于验证,一个用于对属性举办注解:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |