2025-05-25

本周学习的主要内容为工程基础课程跟进和Spring的核心容器、AOP。

一、Spring 核心容器:Bean 的「管家」

Spring 核心容器是框架的「心脏」,负责 Bean 的生命周期管理 和 依赖注入(DI)

两大核心接口

BeanFactory:基础容器,延迟加载 Bean(按需创建),适合轻量级场景。

ApplicationContext:扩展接口,预加载单例 Bean,支持国际化、事件机制等企业级功能,常用于 Web 应用(如 AnnotationConfigApplicationContext 基于注解配置)。

Bean 生命周期

实例化 → 依赖注入 → 初始化(@PostConstruct/init-method)→ 使用 → 销毁(@PreDestroy/destroy-method),可通过 BeanPostProcessor 自定义前后处理逻辑。

作用域与注入方式

作用域:singleton(默认,单例)、prototype(多例)、request/session(Web 场景)。

注入:构造函数注入(强制依赖)、Setter 注入(可选依赖)、@Autowired 注解注入(按类型匹配,搭配 @Qualifier 按名称匹配)。

二、Spring AOP:横切逻辑的「编织者」

AOP(面向切面编程)通过 分离业务逻辑与横切关注点(如日志、事务、权限),降低代码耦合度。

核心概念

切面(Aspect):封装横切逻辑的类(需用 @Aspect 标记)。

通知(Advice):横切逻辑的具体形式,包括:

前置(@Before):方法调用前执行(如权限校验)。

环绕(@Around):包裹目标方法,可控制执行流程(如性能监控)。

异常(@AfterThrowing):方法抛异常时执行(如异常日志记录)。

切入点(Pointcut):用 AspectJ 表达式定义匹配规则(如 execution(* com.service..*.*(..)) 匹配服务层所有方法)。

代理机制

JDK 动态代理:目标对象需实现接口,代理类实现相同接口(默认方式)。

CGLIB 代理:通过继承生成代理类,无需接口(需配置 proxyTargetClass = true)。

典型应用

日志记录、事务管理(@Transactional 本质是 AOP)、统一异常处理、接口限流等。

三、核心容器与 AOP 的协同

切面类本身是容器中的 Bean(需 @Component 注册),由容器管理生命周期。

AOP 通过容器动态生成代理对象,将切面逻辑「织入」目标方法,调用代理对象时自动执行增强逻辑,对业务代码无侵入。

总结

核心容器通过 DI 解耦组件,用标准化流程管理 Bean,是 Spring 框架的基石。

AOP 以「非侵入式」方式增强功能,让业务代码专注核心逻辑,两者结合使 Spring 成为企业级开发的首选框架。实际开发中,建议优先使用注解(如 @Autowired、@Aspect)简化配置,提升开发效率。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态代理的两种方式,以及区别 JDK动态代理:利用反射机制生成一个实现被代理接口的匿名类,在调用具体方法前调用In...
    senzx阅读 1,332评论 0 0
  • 大家好,我是 V 哥。2025年金三银四春招马上进入白热化,兄弟们在即将到来的假期,除了吃喝欢乐过新年,想年后跳槽...
    威哥爱编程阅读 669评论 0 1
  • Spring面试题: 1、简单介绍一下Spring? Spring 是个java企业级应用的开源开发框架。Spri...
    伊尹之阅读 3,130评论 0 1
  • 1、不同版本的 Spring Framework 有哪些主要功能? 2、什么是 Spring Framework?...
    不减肥到一百三不改名字阅读 5,609评论 0 8
  • 1.依赖注入的方式有哪几种?以及这些方法如何使用? Set注入 构造器注入 接口注入 2.什么是IoC和DI? 依...
    义无反顾00阅读 1,833评论 0 0