乐途乐途
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
  • 学习路径
  • 第1章 Spring概述与IoC容器

    • Spring概述与IoC容器
    • Spring Framework 概述
    • IoC 与 DI 核心概念
    • @Configuration 详解
    • @Component 详解
    • @ComponentScan 详解
    • @Import 详解
    • @Profile 详解
    • @PropertySource 详解
    • @Service 详解
    • @Repository 详解
  • 第2章 Bean的定义与依赖注入

    • Bean的定义与依赖注入
    • @Bean 详解
    • @Autowired 详解
    • @Qualifier 详解
    • @Primary 详解
    • @Resource 详解
    • @Inject 详解
    • @Named 详解
    • @Value 详解
    • @Scope 详解
    • @Lazy 详解
  • 第3章 Bean生命周期与作用域

    • Bean生命周期与作用域
    • Bean生命周期概述
    • @PostConstruct
    • @PreDestroy
    • InitializingBean
    • DisposableBean
    • BeanPostProcessor
    • BeanFactoryPostProcessor
  • 第4章 AOP面向切面编程

    • AOP面向切面编程
    • AOP核心概念
    • @EnableAspectJAutoProxy
    • @Aspect
    • @Pointcut
    • @Before
    • @After
    • @AfterReturning
    • @AfterThrowing
    • @Around
  • 第5章 数据访问与事务管理

    • 数据访问与事务管理
    • 数据访问概述
    • @EnableTransactionManagement
    • @Transactional
    • @Transactional 的传播行为
    • @Transactional 的隔离级别
    • @Transactional 的回滚规则
    • @Transactional 的超时与只读属性
    • @TransactionalEventListener
  • 第6章 Spring Boot自动配置基础

    • Spring Boot自动配置基础
    • @SpringBootApplication 注解
    • @EnableAutoConfiguration 注解
    • @ConfigurationProperties 注解
    • @ConditionalOnClass 注解
    • @ConditionalOnMissingBean 注解
    • @ConditionalOnProperty 注解
  • 第7章 从容器到Web: Spring MVC导引

    • Spring MVC 导引
  • 第8章 扩展阅读

    • 扩展阅读
    • Spring 事件机制 — ApplicationEvent / ApplicationListener
    • @EventListener
    • SpEL — Spring 表达式语言
    • 校验 Validation — JSR-303 / JSR-380 Bean Validation
    • 类型转换与数据绑定 — Converter / DataBinder
  • 附录

    • Spring Framework 专业术语
    • Spring 核心知识点
    • Spring 面试高频考点
    • Spring 核心注解速查表

"黄俪发现每次调用用户服务都要写重复的权限检查代码。白歌说:'这不是前端该操心的事,用AOP把横切关注点切出去。'这一章,你将学会在不修改业务代码的前提下,为方法动态添加行为——这是Spring最优雅的魔法之一。"

AOP面向切面编程

本章定位

本章解决的核心问题:如何将日志、权限、事务等横切关注点从业务逻辑中剥离,通过声明式方式在方法执行的不同切入点动态织入增强行为。

学习路线图

学习顺序说明:先建立AOP概念体系(切面、连接点、切入点、通知、织入) → 学习如何定义切面类 → 掌握切入点表达式语法 → 按执行时机顺序学习五种通知类型 → 最后开启自动代理配置。

文件关系说明

文件一句话角色
AOP核心概念.md本章理论基石,理解切面、切入点、通知、织入等核心术语。
Aspect.md切面定义注解,将普通类标记为"横切逻辑容器"。
Pointcut.md切入点注解,用表达式精确描述"在哪些方法上织入"。
Before.md前置通知,方法执行前运行(如参数校验、权限检查)。
After.md后置通知,方法无论成败都会执行(如资源清理)。
AfterReturning.md返回通知,方法成功返回后执行(如结果日志记录)。
AfterThrowing.md异常通知,方法抛出异常后执行(如异常告警)。
Around.md环绕通知,最强大的通知类型,完全控制方法执行流程(如事务、性能监控)。
EnableAspectJAutoProxy.md开启自动代理的开关注解,AOP生效的"总闸"。

知识图谱

核心逻辑:AOP的本质是"代理模式 + 方法拦截";@Aspect定义切面,@Pointcut定位目标,@Around是最强大的通知(事务基于此实现);@EnableAspectJAutoProxy开启Spring的AspectJ自动代理机制,在Bean初始化阶段通过BeanPostProcessor创建代理对象——这正是上一章生命周期知识的直接应用。

与下一章的衔接

本章学完后,你已经掌握了如何通过AOP在不侵入业务代码的前提下添加横切行为。下一章「数据访问与事务管理」将解决:如何在数据库操作中保证ACID特性——而Spring声明式事务(@Transactional)的底层实现,正是依托于本章所学的AOP机制,通过@Around通知在方法前后自动开启、提交或回滚事务。没有AOP基础,就无法真正理解声明式事务的魔法从何而来。

下一页
AOP核心概念