I'm curious to here the opinions of people working in large enterprise organisation whether AOP is widely (or even modestly) used when they are developing? Is AOP something which is inherent in the design. Because from everything I managed to find on the Internet (including by reading the AspectJ in Action, 2nd ed. book) I was left with the impression that AOP is something which is more of a "niche" type of technology. My main point is whether there is a point in investing effort and time in learning to an acceptable level - e.g. the join-point mechanism, advices etc.
Furthermore, do you design with AOP in mind or you use it to amend shortcomings in an existing design?