问题标签 [aspects]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 c# 中用反射或类似(无 3rd 方库)替换属性获取器/设置器
例如,我有一个包含在类中的属性
我想做的是向 HelloPhrase 属性添加一个属性,就像这样
这样在构造函数期间,我可以反映已定义 MyCustomAttribute 的 Class(Greeter) 中的属性,并将该属性的 Get/Set 方法设置为匿名方法/委托。
我设法从类中获取了 PropertyInfo,但这仅公开了 GetSetMethod (http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.getsetmethod.aspx) 和相应的 GetGetMethod。
我在这里和在线阅读了一些问题,但找不到不使用某种 Aspects 库的答案。
任何人都可以提供在运行时设置 Get/Set 方法的指针吗?理想情况下,像这样的代表
java - “after() : staticinitialization(*)”的@AspectJ 语法
我正在尝试使用pertypewithin实例化模型来实现跟踪方面。通过这种方式,我将能够为每种类型的每个类使用一个记录器。
从周围的一些示例中,我们可以找到以下代码来初始化记录器:
不幸的是,我无法将其完全转换为@AspectJ 语法(这是我无法控制的项目要求),尤其是我需要设置记录器的部分,只执行该代码一次。
这可能吗?
谢谢,
postsharp - PostSharp & 关键代码部分
假设应用程序业务规则的关键部分依赖于给定的行为,但是明确编码此行为会使您的代码混乱,您是否会依赖使用 PostSharp(或与此相关的任何其他方面框架)将其封装在一个方面?这是一个“安全”和“明智”的选择,还是无论代码如何混乱,明确编码行为总是更好?这种解决方案的可维护性如何?
exception - 使用 Log4net 或 nlog 在 Spring.NET 中记录异常的最佳方法
我想知道Spring.NET中哪种方式的日志异常是首选以及为什么。我发现了两种常见的情况。
1.使用 IThrowAdvice。
我创建了 throws 建议并在 AfterThrowing 方法中处理/记录异常。
并使用 Common.Loggin API ( Common Loggin API ) 配置例如Log4net进行日志记录。
最后,为业务层中的对象创建一个代理。
这是第一个概念。我发现的第二个是使用 Spring Aspect 库中的异常处理方面。
2.Spring.NET的异常方面
我想为日志异常创建一个处理程序,这个处理程序将使用 Log4net 记录器。
异常处理程序:
然后在异常处理建议中使用此处理程序:
我不确定第二种方法是否好。也许这是愚蠢。
可以将 LogExceptionHandler 配置为使用 Log4net 记录器吗?
caching - 如何在 Groovy 和 Grails 中使用 Spring AOP 方面,具体的缓存示例
我们使用 Grails 和 Groovy 构建了一个大型保险单和索赔管理系统。性能问题正在减慢站点速度,因为所有“READS”都从数据库中获取,这不是必需的,因为大多数数据都是静态的。我们想在 Grails 层中引入一个简单的键/值缓存,但我们不想用 cache.get() 和 cache.set() 代码乱扔现有代码,我们想改用方面。
这是我们主控制器的示例....
就缓存而言,暂时假设它是一个名为“缓存”的简单 Map,可用作全局范围的对象,并且缓存中的对象由请求 URI 键控...
回到控制器,如果我们只是用 cache.get()/set() 乱扔代码,这是我们想要避免使用 Spring AOP 的,我们最终会得到混乱的代码。我们希望通过 apsect 实现以下功能,或者仅通过更简单、更清晰的实现......
我们需要一些例子来展示我们如何使用 Spring AOP 或 Grails 中更简单的东西来实现上述功能,同时避免使用 cache.get()/set() 乱写代码。如果需要使 AOP 正常工作,欢迎提出重构现有控制器的建议。
提前致谢
java - 添加一个方面来捕获异常并返回 null
我已经从使用 Spring Data JPA 切换到带有实体管理器的常规 DAO 对象,并发现 .getSingleResult() 不是返回 null,而是抛出 NoResultException。有没有办法添加一个方面,用 Try {} Catch{} 包围所有 DAO 函数并返回 null 而不是 NoResultExceptions?
或者是否有其他方法可以强制我的 DAO 对象返回 null 而不是异常,而无需手动包围所有对象?
spring - 使用 @Configurable 的 jar 依赖项中对象的 Spring 3 编译时编织问题(使用 Maven)
一直在谷歌上搜索并为此工作太久了。也看过各种stackoverflow帖子,但仍然对这里发生的事情感到困惑。
首先,我想要什么:
我有一个持久性 jar,在我的 Web 项目中用作依赖项。在这个持久化 jar 中,使用 web 项目中的 spring 配置可以很好地设置 daos。不过,我现在想做的是在一个基类(抽象)中,我希望能够在 String 上注入一个属性集,但扩展这个抽象类的类不是通过 Spring 直接控制的(例如,通过 new 实例化我的小鬼()。)
从我收集的所有内容中,我需要利用@Configurable。
奇怪的是,代码全部编译(使用 Maven 使用方面插件),我认为必须进行一些编织,因为对扩展 @Configurable 抽象类的对象的调用似乎落入了“黑洞”——还没有错误通过旧的 skool System.out.print 语句甚至无法将任何内容打印到系统???真的很奇怪。
下面我认为是我如何设置的相关信息......(显然没有显示所有内容):
Web项目弹簧配置:
上述 Web 项目(包含 MyAbstractClass 及其后代)使用的 jar 没有任何 XML。各种文件扩展 MyAbstractClass 并通过 new 在应用程序中创建: MyImp imp = new MyImp(); imp.bar();
MyAbstractClass 相关信息:
我可以稍后使用@Autowiring 并使用@Value(这是我第一次尝试的方法),但现在我什至不确定编织是否正常工作。问题是否可能是持久性 jar 是首先通过 maven(使用编织)编译的 - 但是直到稍后基于 web 项目它才知道 xlsDir 的设置器是什么?这并不能解释为什么对 bar() 的调用只是消失了——所以发生了一些事情。
对于这两个项目,我已经设置了 maven 以根据我看到 Spring Roo 的 pom 所做的事情进行编译(很难在网上确定这个 pom 中真正需要的东西,以便用 spring 编织 maven 方面。)
这是相关的 pom 信息(在下面留下 spring roo 的评论 - 它们不是我的):
非常感谢任何帮助。我即将放弃,只需将我的属性文件加载到静态块中并完成它:)
c# - 如何开始使用 C# 中的切面
我听说过编程语言的方面,我对此非常感兴趣。但是我不知道如何开始使用它们。我坚信你们可能会朝着正确的方向前进。
java - 包含方面和类的 jar 文件可以安全地自我检测吗
如果我有一个包含已编译方面和已编译类的检测 jar 文件,我可以用它自己检测该 jar 吗?
如果我对输出 jar 重复此操作,行为是否会重复,或者第二个输出是否与第一个相同?
java - 为什么存在 serialVersionUID 字段?
它让我对Serializable
界面的启动感到困惑,为什么我必须将此字段合并到我的所有课程中。我知道这个接口需要一个唯一的标识符来标记这个类,但是为什么他们不能在运行时生成它。例如,他们可以使用完全限定类名的 MD5 散列或用于处理罕见情况下的重复项的类似方法来生成它(我敢肯定,当被要求生成 id 时,eclipse 会做什么)。
那么我要问的是(不,这篇文章不仅仅是对标准库的咆哮)框架到底是如何使用序列化字段的?
我想知道的原因是因为我将尝试创建一个 Aspect(用 AspectJ 或其他语言),它将使用 MD5 哈希添加 serialVersionUID 字段,并且能够以 API 可接受的方式处理冲突。
如果我能让它工作,我会发布结果。