标签: aop

无法捕获的ChuckNorrisException

是否有可能在Java中构建一个代码片段,使得假设无法java.lang.ChuckNorrisException捕获?

想到的想法是使用例如拦截器或面向方面的编程.

java aop exception-handling exception

588
推荐指数
13
解决办法
3万
查看次数

什么是面向方面的编程?

我理解面向对象的编程,并且已经编写了OO程序很长一段时间.人们似乎在谈论面向方面的编程,但我从未真正了解它是什么或如何使用它.什么是基本范式?

这个问题是相关的,但并没有提出这个问题:

面向方面编程与面向对象编程

paradigms aop

219
推荐指数
7
解决办法
7万
查看次数

面向方面编程与面向对象编程

像这里和整个世界的大多数开发人员一样,我多年来一直在使用面向对象编程(OOP)技术开发软件系统.因此,当我读到面向方面编程(AOP)解决传统OOP无法完全或直接解决的许多问题时,我会停下来思考,这是真的吗?

我已经阅读了很多信息,试图学习这个AOP范例的关键,并且我在同一个地方,所以,我想更好地理解它在现实世界应用程序开发中的好处.

有人有答案吗?

oop paradigms aop

192
推荐指数
6
解决办法
5万
查看次数

如何在C#中拦截方法调用?

对于给定的类,我希望有跟踪功能,即我想记录每个方法调用(方法签名和实际参数值)和每个方法退出(只是方法签名).

我如何做到这一点假设:

  • 我不想为C#使用任何第三方AOP库,
  • 我不想将重复的代码添加到我想要跟踪的所有方法中,
  • 我不想更改类的公共API - 类的用户应该能够以完全相同的方式调用所有方法.

为了使问题更具体,让我们假设有3个类:

 public class Caller 
 {
     public static void Call() 
     {
         Traced traced = new Traced();
         traced.Method1();
         traced.Method2(); 
     }
 }

 public class Traced 
 {
     public void Method1(String name, Int32 value) { }

     public void Method2(Object object) { }
 }

 public class Logger
 {
     public static void LogStart(MethodInfo method, Object[] parameterValues);

     public static void LogEnd(MethodInfo method);
 }
Run Code Online (Sandbox Code Playgroud)

如何调用Logger.LogStartLogger.LogEnd每次调用方法1方法2,而无需修改Caller.Call方法,没有明确地加入调用Traced.Method1Traced.Method2

编辑:如果我允许稍微更改Call方法,会有什么解决方案?

c# reflection aop

148
推荐指数
7
解决办法
8万
查看次数

具有特定注释的类的所有方法的@AspectJ切入点

我想监视具有指定注释的所有类的所有公共方法(比如@Monitor)(注意:注释在类级别).什么可能是一个可能的切入点?注意:我使用的是@AspectJ样式的Spring AOP.

java aop aspectj spring-aop

117
推荐指数
5
解决办法
13万
查看次数

交叉关注的例子

什么是一个很好的例子cross-cutting concern维基百科页面上的医疗记录示例对我来说似乎不完整.

特别是从这个例子中,为什么日志记录会导致代码重复(散射)?(除了简单的呼叫,如log("....")无处不在,这似乎不是什么大不了的事).

a core concern和a有cross-cutting concern什么区别?

我的最终目标是更好地了解AOP.

aop design-patterns cross-cutting-concerns

103
推荐指数
3
解决办法
5万
查看次数

不使用存储库模式,按原样使用ORM(EF)

我总是使用Repository模式但是对于我的最新项目,我想看看我是否可以完善它的使用和我的"工作单元"的实现.我开始挖的越多,我开始问自己一个问题:"我真的需要它吗?"

现在这一切都从Stackoverflow上的一些评论开始,跟踪Ayende Rahien在他的博客上的帖子,其中有2个具体,

这可能是永远和永远讨论的,它取决于不同的应用程序.我想知道什么

  1. 这种方法是否适合实体框架项目?
  2. 使用这种方法是业务逻辑仍然在服务层或扩展方法(如下所述,我知道,扩展方法是使用NHib会话)?

使用扩展方法很容易做到这一点.干净,简单,可重复使用.

public static IEnumerable GetAll(
    this ISession instance, Expression<Func<T, bool>> where) where T : class
{
    return instance.QueryOver().Where(where).List();
}
Run Code Online (Sandbox Code Playgroud)

使用这种方法和NinjectDI,我是否需要创建Context一个接口并将其注入我的控制器?

architecture aop design-patterns entity-framework repository-pattern

89
推荐指数
5
解决办法
2万
查看次数

.Net中AOP的最佳实现是什么?

在C#,VB.net中有很多AOP实现.这是一些AOP实现:

.Net中AOP的最佳实现是什么?我应该用什么?

.net aop

81
推荐指数
4
解决办法
4万
查看次数

Spring AOP:JoinPoint和PointCut有什么区别?

我正在学习面向方面的编程概念和Spring AOP.我无法理解Pointcut和Joinpoint之间的区别 - 它们对我来说似乎都是一样的.Pointcut是您应用建议的地方,Joinpoint也是我们可以应用我们建议的地方.那有什么区别?

切入点的一个例子可以是:

@Pointcut("execution(* * getName()")
Run Code Online (Sandbox Code Playgroud)

什么是Joinpoint的例子?

aop spring aspectj spring-aop pointcut

79
推荐指数
8
解决办法
8万
查看次数

面向Java面向方面的注释编程

在一篇名为"AOP Fundamentals"的文章中,我要求King的英文解释AOP是什么,以及它做了什么.我收到了一些非常有用的答案和链接到文章,这些文章帮助我了解了所有理论.

但是现在AOP得到了我的全部关注,所有这些文章和章节摘录都很棒,但在每一个案例中,它们都包含了崇高的理论,模糊的UML模型,以及抽象的顺序,这些都是我喜欢的.

这是我对AOP理论的理解,只是为了澄清,所以如果你看到一些看起来不对的东西,请告诉我!

  1. 诸如日志记录,身份验证,同步,验证,异常处理等交叉问题在非AOP系统中变得高度耦合,因为它们几乎被代码库中的每个组件/模块使用.

  2. AOP定义了使用连接点,建议切入点来抽象这些横切关注点的方面(类/方法).

    一个.建议 - 实现跨领域关注(即进行实际记录,验证,验证等)的实际代码(方面的方法,可能?)

    加入点 - 在非AOP代码中触发的事件,导致特定方面的建议被执行("编织"到非AOP代码中)

    C.切入点 - 基本上是连接点(触发事件)到建议执行的映射

  3. 所有方面都模块化(LoggingAspect,AuthenticationAspect,ValidationAspect等)到组件中并使用AspectWeaver注册.当非AOP/POJO代码遇到连接点时,AspectWeaver会围绕非AOP代码"编织"(集成)映射的建议:

public class LoggingAspect
{
    // ...

    public void log(String msg) { ... }
}

public class ExceptionHandlingAspect
{
    // ..

    public void handle(Exception exc) { ... }
}

public class NonAOPCode
{
    // ...

    @LoggingAspect @ExceptionHandlingAspect
    public void foo()
    {
        // do some stuff... …

java aop

62
推荐指数
4
解决办法
5万
查看次数