One-size-fit-all fits nothing! Just one kind of AOP won’t fit all applications, either. Therefore, there are many choices available when using Spring-AspectJ combination. First, there is a choice about AOP system: proxy-based AOP or bytecode-based AOP. Then there is a syntax choice: traditional AspectJ, @AspectJ, and XML syntax. Within bytecode-based weaving, there are weaving choices: build time weaver or load-time weaver (LTW). If you choose LTW, you have further choices of AspectJ agent-driven or Spring-driven LTW. Confused? Don’t be. These choices, while confusing at first, exists for a reason. This session explores all these choices and provides guideline on choosing the right combination to make you successful with AOP.