What are the possible AOP use cases?

前端 未结 11 2033
孤街浪徒
孤街浪徒 2020-12-23 16:27

I\'d like to make a picture of what are the possible cases for effective involvement of AOP in application design. All I have met so far is:

  • logging-related
相关标签:
11条回答
  • 2020-12-23 16:34

    INotifyPropertyChanged and similar horrors.

    Basically wherever there is code that looks like this - use an aspect and you are done.

    0 讨论(0)
  • 2020-12-23 16:44

    I can give you two examples where we use it:

    • Automatically registering objects in JMX for remote management. If a class is annotated with our @AutoRegister annotation, we have an aspect that watches for new instantiations of that class and registers them in JMX automatically.

    • Audit logging (the gold standard AOP use case). Its a bit coarse but the general approach is to annotate methods that represent some auditable action. Combined with something like Spring Security, we can get a pretty good idea of:

      • who the user is
      • what method they're invoking
      • what data they're providing
      • what time the method was invoked
      • whether the invocation was successful or not (i.e., if an exception was thrown)
    0 讨论(0)
  • 2020-12-23 16:45

    We use it for software license management, i.e. allow the software to run only if the computer has some specific license(s) installed. It is not that different from your listed uses, since it is a form of security check.

    I published a blog entry describing a practical implementation here

    0 讨论(0)
  • 2020-12-23 16:46

    Runtime checking of code contracts. Code Contracts for .NET use AOP for

    Runtime Checking. Our binary rewriter modifies a program by injecting the contracts, which are checked as part of program execution.

    0 讨论(0)
  • 2020-12-23 16:51

    One effective use of AOP, besides all those you listed, can be validation. Validation of user input, or business objects.

    Related articles you must look at.

    • AOP@Work: Design with pointcuts to avoid pattern density
    • AOP@Work: Enhance design patterns with AspectJ, Part 2
    0 讨论(0)
  • 2020-12-23 16:54
    • Exception Handling: don't need to repeat the horrible list of try ... catch, catch, catch etc - also means the exception handling is guaranteed to be consistent.
    • Performance monitoring: Very useful as using an aspect is non intrusive and can be done after the fact and then turned off when no longer required.

    Wow... 10 years ago - didn't have much for AOP... Here are a few more

    • Be able to customise objects where you don't have access to their constructor (e.g. jpa entities)
    • Implementing security rules (security says user is not allowed to call this method - AOP can implement that)
    • Transaction manager (begin, commit, rollback)
    • Caching - want to cache the result of a method and not call it again
    0 讨论(0)
提交回复
热议问题