# Method security: the chapters Companion notes for [Method Security in Spring Security 7](https://ankurm.com/spring-security-7-method-security-proxy-traps/) on ankurm.com. Read in order, or jump to whichever failure you are currently staring at. | # | Chapter | Answers | |---|---|---| | 01 | [How method security actually runs](01-how-method-security-runs.md) | What `@EnableMethodSecurity` registers, and what happens between the caller and the method body | | 02 | [The SpEL reference](02-spel-reference.md) | Everything you can write inside the annotation, evaluated for real | | 03 | [Self-invocation](03-self-invocation.md) | Silent failure #1, why it happens, and three fixes | | 04 | [Methods the proxy cannot advise](04-non-proxyable-methods.md) | Silent failure #2: `final`, `static`, `private`, interfaces, final classes | | 05 | [Filtering and `filterObject`](05-filtering.md) | Silent failure #3: `@PreFilter` on an immutable argument, and which container types work | | 06 | [Denial: what is thrown, and how to change it](06-denied-handling.md) | `AuthorizationDeniedException`, `@HandleAuthorizationDenied`, `@AuthorizeReturnObject` | | 07 | [Ordering, and `@PostAuthorize` vs `@Transactional`](07-ordering-and-transactions.md) | Why a denied `@PostAuthorize` does not roll anything back by default | | 08 | [Meta-annotations and templates](08-meta-annotations.md) | Custom annotations, `{value}` templates, class-level rules, ambiguity | | 09 | [The audit checklist](09-audit-checklist.md) | What to grep for in an existing codebase, plus the edge-case index | Every claim in these chapters has a file under [`output/`](output/) behind it, regenerated by `scripts/run-all.sh`.