首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >面向Java的面向方面编程和注释

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

Stack Overflow用户
提问于 2018-03-28 05:19:49
回答 2查看 0关注 0票数 0

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

  1. 诸如日志记录,身份验证,同步,验证,异常处理等交叉问题在非AOP系统中变得高度耦合,因为它们几乎被代码库中的每个组件/模块普遍使用。
  2. AOP定义了通过使用连接点建议切入点来抽象这些横切关注点的方面(类/方法)。 一个。建议 - 实际的代码(某个方面的方法,或许?)实现交叉关注(即进行实际的日志记录,验证,认证等) 湾 加入点 - 在非AOP代码中触发的事件,它导致特定方面的建议被执行(“编织”为非AOP代码) C。切入点 - 实质上是连接点(触发事件)到建议执行的映射
  3. 所有方面都被模块化(LoggingAspect,AuthenticationAspect,ValidationAspect等)到组件中并通过AspectWeaver注册。当非AOP / POJO代码遇到连接点时,AspectWeaver围绕非AOP代码“编织”(集成)映射建议:
代码语言:javascript
复制
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...
    }
}

// Now in the driver
public static int main void(String[] args)
{
    NonAOPCode nonAOP = new NonAOPCode();
    nonAOP.foo();
}

// The AspectWeaver *magically* might weave in method calls so main now becomes:
{
    NonAOPCode nonAOP = new NonAOPCode();

    log(someMsg);
    nonAOP.foo();
    handle(someExc);
}

是否对目标或基于Java的AOP有所了解,以及为什么?如何正确使用注释来实现方面,建议,连接点,切入点和这个所谓的方面编织器?

EN

Stack Overflow用户

发布于 2018-03-28 14:53:51

几个月前,我写了一篇关于如何实现将Aspect / J方面与Java注释相结合的实例的文章,您可能会发现它很有用:

http://technomilk.wordpress.com/2010/11/06/combining-annotations-and-aspects-part-1/

我相信应用于注释的方面是一个很好的组合,因为它们使代码中的方面更加明确,但以一种干净的方式,并且您可以在注释中使用参数以获得更大的灵活性。

顺便说一下,Aspect / J的工作方式是在编译时修改类,而不是在运行时修改。您通过Aspect / J编译器运行源和方面,并创建修改后的类文件。

据我所知,Spring AOP以不同的方式编织(操作类文件以包含方面处理),通过创建代理对象,我相信在实例化时(但不要听我说) 。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档