Table of Contents
Preface
Chapter 1: Understanding AOP Concepts
Chapter 2: Spring AOP Components
Chapter 3: Spring AOP Proxies
Chapter 4: AspectJ Support
Chapter 5: Design with AOP
Chapter 6: Three-tier Spring Application, Domain-Driven Design
Chapter 7: Three-tier Spring Application, Tests and AOP
Chapter 8: Develop with AOP Tools
Index
- Chapter 1: Understanding AOP Concepts
- Limits of object-oriented programming
- Code scattering
- Code tangling
- The AOP solution
- What Spring provides in terms of AOP
- Programmatic way
- Before advice
- After returning advice
- Around advice
- After throwing advice
- The old Spring XML way
- Programmatic way
- AOP with IoC in Spring 2.5
- AspectJ annotations
- Before advice
- After returning advice
- Around advice
- After (finally) advice
- After throwing advice
- Schema-based configuration
- Before advice
- After advice
- After returning advice
- After throwing advice
- Around advice
- AspectJ annotations
- Summary
- Limits of object-oriented programming
- Chapter 2: Spring AOP Components
- Aspect
- Pointcut
- Pointcut and its components
- NameMatchMethodPointcut
- RegexpMethodPointcut
- StaticMethodMatcherPointcut
- DynamicMethodMatcherPointcut
- Pointcut and its components
- Operations on Pointcut
- ComposablePointcut
- ControlFlowPointcut
- Pointcut constants
- Joinpoint
- Advice
- Before advice
- After returning advice
- After throwing advice
- Advisor
- Introductions
- Summary
- Chapter 3: Spring AOP Proxies
- Proxy
- JDK proxy
- CGLIB proxy
- Creating proxies programmatically
- ClassicProxy
- AspectJProxy
- ProxyFactoryBean
- ProxyFactoryBean and proxies
- ProxyFactoryBean in action
- Advised objects
- Autoproxy
- Autoproxy with classic Spring
- BeanNameAutoProxyCreator
- DefaultAdvisorAutoProxyCreator
- AbstractAdvisorAutoProxyCreator
- AutoProxyCreator with metadata
- Autoproxy with AspectJ
- Autoproxy with annotation
- Autoproxy with XML Schema
- Autoproxy with classic Spring
- Target sources
- Hot swappable target sources
- Pooling target sources
- Prototype target sources
- ThreadLocal target source
- Summary
- Chapter 4: AspectJ Support
- AspectJ annotations
- Aspect
- Pointcut
- execution
- within
- this
- target
- args
- @target
- @args
- @ within
- @ annotation
- bean
- Selection on methods' names
- Selection on types of argument
- Selection on type of return
- Selection on declared exceptions
- Selection on hierarchy
- Selection on annotations
- Binding advice arguments
- JoinPoint
- Binding arguments
- Binding of return values
- Exception binding
- Annotation binding
- Advice
- @Before
- @AfterReturning
- @AfterThrowing
- @After
- @Around
- Introduction
- XML Schema-based configuration
- Aspect
- Pointcut
- Advice
- Before advice
- After returning advice
- After throwing advice
- After (finally) advice
- Around advice
- Introduction
- Advisors
- Recipes
- Dependency injection in domain objects
- Advice ordering
- Configuration mixin
- Aspect instantiation model
- AspectJ weaving in Spring
- Load-time weaving with Spring
- Load-time weaving with AspectJ
- AOP strategy considerations
- Summary
- AspectJ annotations
- Chapter 5: Design with AOP
- Concurrency with AOP
- Transparent caching with AOP
- Security with AOP
- Securing methods with security interceptors
- Securing methods with pointcuts
- Securing methods with annotations
- Summary
- Chapter 6: Three-tier Spring Application, Domain-Driven Design
- Domain-Driven Design
- Roles and responsibilities
- Entities
- Aggregates
- Modules
- Value objects
- Factories
- Repositories
- Services
- Architecture
- User interface
- Application layer
- Domain layer
- Infrastructure layer
- Roles and responsibilities
- Sample application
- Design
- Services
- Factories
- Repositories
- Summary
- Domain-Driven Design
- Chapter 7: Three-tier Spring Application, Tests and AOP
- Application layer and user interface
- Test
- AOP
- Cache
- Concurrent
- TimeExecutionManagedAspect
- Transactions
- Security
- Summary
- Chapter 8: Develop with AOP Tools
- Java Development Kit
- Spring
- Eclipse
- Eclipse plug-ins (Linux, MacOSX, and Windows)
- SpringIDE
- AJDT
- Apache Tomcat
- Ubuntu Linux
- MacOSX
- Microsoft Windows
- Common steps for Linux, MacOSX, and Windows
- PostgreSQL
- Ubuntu Linux
- MacOSX
- Microsoft Windows
- Common steps for Linux, Apple MacOSX, and Microsoft Windows
- JDBC Driver
- Summary


