I am going to interpret the question as "Spring has kick-ass AOP, how does Seam compare?"
There is a fundamental difference in
philosophy on this topic between the Spring and Seam camps. The members of the Seam project do not believe that you need the rope that AspectJ gives you to hang yourself. Instead, the Seam folks believe that annotations should describe what your application is doing and annotation processors should provide that functionality. Once your metadata starts to look procedural (as it does with AspectJ), you have stretched it beyond its true utility.
To appreciate how strongly the Seam developers feel about using annotations as stereotypes, you only have to pick up a copy of the WebBeans specification. That specification embodies the essence of what Gavin was going for when he wrote Seam and he feels he has now captured with WebBeans (don't take that to mean that Seam is incomplete, it's just that Gavin continues to innovate).
To give you a more direct reply, Seam basically gives you synonym annotations, or can process the
Java EE annotations directly, for @AroundInvoke and @Interceptors. Where Seam adds functionality is that @Interceptors is a meta-annotation, which means you annotate a custom annotation and then apply the custom annotation to the component. This puts a layer of abstraction between the interceptor and the business class. Your custom annotation describes the functionality that the interceptor provides. To cite an example, your custom annotation might be @Audit or @Secure.
[ October 08, 2008: Message edited by: Dan Allen ]