如何将AOP引入到生产性软件开发中?

2024-02-16

我知道这个问题以前曾被问过,但这是一年半前的事了,尽管我认为现在可能是重新提问的时候了。我也认识到它可能被视为主观的,但我认为支持/反对 AOP 是有客观原因的。

我有兴趣谁在使用AOP在软件开发中也why or why not使用它。

我认为 AOP 是一个非常强大的范例,它可以使许多开发任务变得更容易。但是当谈到在现实世界的项目中使用 AOP 时,我已经获得了许多人的经验决定者几乎不对其开放。您是如何设法将 AOP 引入到您的项目中的?

2008 年 8 月提出的问题:您在生产软件中使用AOP(面向方面​​编程)吗? https://stackoverflow.com/questions/20663/do-you-use-aop-aspect-oriented-programming-in-production-software


我们的经理听取架构团队的意见。

我们告诉他们,AOP是实现跨关注点特性的唯一解决方案:

  • 首先以合理的成本
  • 不会弄乱开发团队编写的功能代码
  • 现在和将来都不会忘记(与手动向数千个方法添加 try-catch 相比)
  • 无需训练或控制开发人员正在做的事情(有些很棒,有些则一团糟)
  • 具有良好的可维护性

诚然,我们的项目有 20 名开发人员,持续了好几年,所以代码量很大。这是唯一的解决办法。

我认为关键是仅将其用于跨领域关注点。 如果您可以使用常规代码对其进行编码,请这样做。但如果它太大,那么 AOP 就有吸引力并且合理。如果不限制AOP,就会导致数百个AOP小代码,这将很难理解。

是的,我们的软件是生产软件。数百家诊所依赖它!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将AOP引入到生产性软件开发中? 的相关文章

  • 使用大量 AOP 请求作用域 bean 时出现性能问题

    我正在使用 Spring 3 开发一个半大型应用程序 并且在同时处理数百个用户时遇到性能问题 我正在使用 Spring 的 AOP 代理来使用多个请求范围的 bean 并且我可以看到 每次我对其中一个 bean 调用任何方法时 都会调用 C
  • Spring AOP Aspect 无法使用 Mockito 工作

    我有一个 Aspect它编织了我所有控制器操作方法的执行 当我运行系统时它工作得很好 但在单元测试中却不行 我按以下方式使用 Mockito 和 junit RunWith SpringJUnit4ClassRunner class Con
  • 如何在 Spring 中注入具有受保护方法的 JDK 代理类?

    我的情况相当奇怪 我使用 Spring 3 0 6 和一个实现和接口的 bean 到目前为止 都是很正常的事情 我的 bean 也有一些受保护的方法 我正在使用一些 AOP JDK 代理 一切正常 当我想将此 bean 注入另一个包类时 我
  • 关于 C# 的 AOP 的建议 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 理解 MVC:模型上的“Fat”和控制器上的“Skinny”是什么概念?

    我试图理解模型上的 胖 与控制器上的 瘦 的概念 并且根据我一直在讨论的内容 我有以下示例 这取自 freenode 讨论 问 在 MVC 范式中 它说胖模型 瘦控制器 我在这里想 如果我有很多方法 在控制器上 只使用一些抽象方法来 CRU
  • spectj可以向java.lang.String添加方法吗

    我读过aspectj的一些文章 我知道它可以增强类 这很有吸引力 我有一个非常愚蠢的问题 我找不到明确的答案 spectj可以向java lang String添加方法吗 或者类似的问题 如果我无法获取某些类的源代码 我可以通过aspect
  • 标记/样式最佳实践:如何在 CSS 类上有效地分发样式规则?

    假设我有一些 HTML 页面和相应的 CSS 文件 我想为某些元素添加圆角 我想在其他所有部分上替换背景颜色 我想为每个部分标题添加悬停状态 如此等等 我一直在造型 造型 造型 我发现存在三个极端 涉及按类 按 id 和按层次结构在标记上分
  • JAX RS 客户端 API 拦截器

    当使用 JAX RS 客户端 API 时 有没有办法通过拦截器将标头添加到请求中 而不是通过显式设置标头 Client client ClientBuilder newClient Response response client targ
  • Spring 3.1实例化bean时出错

    我有以下课程 public abstract class AbstractBusinessModule public class MS3BusinessModule extends AbstractBusinessModule public
  • 您是否使用 MDA/MDD/MDSD 等任何类型的模型驱动方法?未来会是这样吗?

    编程语言在其历史上经历了几个 或 进化步骤 有些人认为模型驱动的方法将是下一件大事 openArchitectureWare AndroMDA Sculptor Fornax Platform 等工具可以带来令人难以置信的生产力提升 然而
  • Java Aspect 返回要在方法中使用的值

    我有一个 After运行某些逻辑的java方面 我需要它返回一个结果 一个对象 该结果可以在方面切入点拦截的方法中使用 是否可以 你需要的是 Around它允许您将想要的任何内容返回给建议的对象 Around com xyz myapp U
  • PHP:将类的所有函数包装在子类中

    使用 PHP 库类 我想将其所有公共函数包装在一个子类中 大致如下 class BaseClass function do something some stuff function do something else other stuf
  • 使用 PostSharp 添加 OnException 属性

    我正在尝试一些 AOP 似乎 NET PostSharp 是可行的方法 我想在发生异常时对数据库进行一些简单的日志记录 然而 我发现除了基础知识之外 很难找到任何使用 PostSharp 的真实可靠的例子 我尝试了以下方法 Serializ
  • Ninject 通过城堡动态代理拦截具有非空构造函数的代理类

    我当前的大部分实现都基于此处提供的信息 Ninject 拦截任何具有特定属性的方法吗 https stackoverflow com questions 6386461 ninject intercept any method with c
  • 运行单元测试时如何禁用 PostSharp?

    我希望我的 nunit 测试不应用任何 PostSharp 方面 这样我就可以单独测试我的方法 这可以在测试夹具设置中以某种方式完成 还是只能在每个项目级别上完成 您可以在测试版本上设置 SkipPostSharp 标志 这样它就不会首先编
  • 将 AOP 与 OSGI 结合使用的最佳解决方案?

    我正在使用 Equinox 因此 Equinox Aspect 项目似乎是理所当然的 但该项目似乎处于非活动状态 并且只有一页文档 让我最终悬而未决 除了那个项目之外 我没有看到在 OSGI 中使用 AOP 的很多选项 让我知道你们的想法以
  • AOP 使用 around 来避免执行方法

    我在代码中使用 Spring AOP 来拦截某个方法的执行 我正在尝试做的一个简化示例如下 public void someMethod does something Around execution someMethod public v
  • 带有 Grails 的 AOP

    我想在我的 Grails 项目中创建自定义日志记录注释 My code class MyService AuditLog def method1 println method1 called method2 AuditLog def met
  • HK2 MethodInterceptor 与 Jersey 资源

    如何设置aopMethodInterceptor使用泽西岛资源 这是我尝试过的 如下this https hk2 java net 2 2 0 aop example html文档 第 1 步 拦截服务 public class MyInt
  • AspectJ 与 weblogic

    我正在尝试使用 LTW 在 Weblogic 上运行 AspectJ 我的切入点是针对公共构造函数和方法的 建议是针对 Before AfterReturning 和 AfterThrowing 的 当我访问简单的 Hello World

随机推荐

  • 使用与主用户名不同的 RDS 代理用户连接被拒绝

    我正在尝试设置 RDS 代理来为我的应用程序提供 mysql 数据库服务 大多数应用程序运行时使用的用户名和密码等于 RDS 数据库上设置的主用户名 该用户名和密码具有所有权限 我尝试使用与主用户名不同的用户名和密码访问我的 RDS 实例
  • 如何消除这个错误? java.lang.reflect.InitationTargetException [重复]

    这个问题在这里已经有答案了 我添加了所有需要的权限 PackageManager packageManager context getPackageManager Class
  • @事务和继承

    我曾经添加过 Transactional所有 Spring 服务 类 的注释 然后我想 如果事务行为应该相同 我真的必须这样做吗 当然 如果不应该的话 我们会添加 Transational以及方法的其他参数 我试图找到一些关于继承的有用信息
  • 如何使用 Xunit 2.0 动态跳过测试?

    Xunit 1 9 x 为用户提供了DynamicSkipExample cs https github com xunit xunit blob v1 samples AssertExamples DynamicSkipExample c
  • 如何获取 SLURM 作业所用脚本的原始位置?

    我正在使用脚本启动 SLURM 作业 并且脚本必须根据其在脚本本身内部获取的位置来工作SCRIPT LOCATION realpath 0 但 SLURM 将脚本复制到slurmd文件夹并从那里开始工作 这会搞砸进一步的操作 在移动 复制之
  • 桌面上方的浮动图标

    我正在编写一个 C 应用程序 我希望它在桌面上有一个浮动图标 就像移动设备中的 Facebook Messenger 我一直在互联网上搜索但找不到任何有用的东西 有文章吗 有想法吗 您需要创建一个没有标题栏和边框的表单 并使用图像作为表单的
  • OpenCV中概率霍夫变换的具体实现是什么?

    有谁知道 OpenCV 实现中概率霍夫变换的特定算法吗 我的意思是 有关于该算法的参考论文或文档吗 为了得到这个想法 我当然可以查看源代码 但我想知道是否有任何关于它的文档 它不在源代码的注释中 OpenCV 1 0 谢谢你 Jin Ope
  • 是否需要验证或转义jsonp回调字符串

    我有一个名为 action php 的文件 它将执行一些操作 我想将其公开为纯 JSON 或 JSONP 输出 用户将使用如下 URL 来调用它 action php jsonp callback 在我的action php中我正在做这样的
  • 服务器端对云服务执行多个请求

    我正在编写一个使用多个 Web API 的 Web 应用程序 对于单个用户的单个请求 我的应用程序可能需要对其他站点执行最多 30 个 HTTP 请求 包含网络应用程序的网站可以拥有数百个并发用户 我一直在四处寻找 试图找出应该使用哪个库
  • Kubernetes,无法通过 DNS 挂载 NFS 共享

    我正在尝试通过 DNS 查找在我的容器中安装 NFS 共享 k8s 集群外部 我的配置如下 apiVersion v1 kind Pod metadata name service a spec containers name servic
  • 设计模式和架构模式有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我们读到设计模式在互联网上 我们注意到有 3 类 创作型 结构性 行为的 但是当我们创建软件架构时 我们会考虑 MVP MVC 或
  • 覆盖 Spree Commerce 的 Bootstrap 变量

    我在部署自定义项目时遇到问题 variables scss作为编译资产添加到我的生产服务器 在我的开发环境中一切都很好 在生产中我的变量被覆盖 我正在使用 Rails 4 2 1 和 Spree 3 0 稳定分支 我有以下结构 文件创建于v
  • 如何仅在少数列中插入数据,而其他列为空或像它们在mysql表记录中一样?

    我创建了一个名为 学生 的表 它有以下字段 roll no lt type Integer Not Null course name lt type varchar 40 Not Null std surname lt type varch
  • 实体框架 5 命名空间

    我想首先将 Entity Framework 5 数据库添加到面向 net Framework 4 5 的 Visual Studio 2012 中的类库中 我对需要输入的所有标签感到困惑 将 ADO NET 实体数据模型添加到项目时的 E
  • 裁剪 CMSampleBuffer 并对其进行处理,而不转换为 CGImage

    我一直在关注苹果直播摄像机编辑器 https developer apple com documentation avfoundation cameras and media capture avcamfilter applying fil
  • RESTful API:需要用户代理字符串吗?

    我的团队有一个带有 RESTful API 的网站 我们正在对其进行负载测试 因此我们构建了一个小型控制台应用程序来处理请求 此控制台应用程序不会设置用户代理字符串 这会导致我们的 API 出现错误 因为它是我们数据库中的必填字段 那么 如
  • 服务器端的 Blazor:使用 MongoDB 进行身份管理

    VS 2019 中的 Asp Net Core Blazor 模板可以创建一个服务器端应用程序 该应用程序将使用 Microsoft SQL Server 来管理帐户和声明以进行身份 管理 我想用MongoDB而不是用于账户和索赔管理 这样
  • UILocalNotification 自定义 soundName 仅在指定alertBody 时振动手机(与 UILocalNotificationDefaultSoundName 不同)?

    我有一个 VoIP 应用程序 当应用程序在后台时 它使用 UILocalNotification 通知用户有来电 当出现通知时 我希望它多次播放声音并振动手机 并且不会重复显示相同的消息 我能够通过使用一系列通知来做到这一点 第一个通知会立
  • cx_Oracle & 远程连接到 Oracle DB

    如何通过 IP 地址连接到远程服务器 就像 TOAD SqlDeveloper 能够仅使用 IP 地址 用户名 SID 和密码连接到数据库一样 每当我尝试指定 IP 地址时 它似乎都是在本地获取的 换句话说 cx Oracle connec
  • 如何将AOP引入到生产性软件开发中?

    我知道这个问题以前曾被问过 但这是一年半前的事了 尽管我认为现在可能是重新提问的时候了 我也认识到它可能被视为主观的 但我认为支持 反对 AOP 是有客观原因的 我有兴趣谁在使用AOP在软件开发中也why or why not使用它 我认为