Spring核心框架(IoC、AOP)
2026/8/18 11:34:04 网站建设 项目流程

一、Spring框架概述

Spring框架是一个开源的Java企业级应用开发 框架,由Rod Johnson于2003年首次提出。它通过提供全面的基础设施支持,简化了Java企业级应用的开发。Spring的核心特性包括依赖注入(DI)面向切面编程(AOP),这两大特性使得应用程序的组件更加松散耦合,代码更加模块化,易于测试和维护。

二、Spring核心模块

1. Spring Core Container(核心容器)

这是Spring框架最基础的部分,包含以下关键组件:

  • BeanFactory:Spring IoC容器的基本实现,负责管理Bean的生命周期和依赖关系。
  • ApplicationContext:BeanFactory的增强版,提供了更多企业级功能,如国际化、事件传播、资源加载等。
  • Bean Definition:描述Bean的配置元数据,包括类名、作用域、属性值、依赖关系等。

2. Spring AOP(面向切面编程)

AOP模块提供了面向切面编程的实现,允许开发者将横切关注点(如日志、事务、安全)从业务逻辑中分离出来。主要组件包括:

  • 切面(Aspect):横切关注点的模块化,通常是一个类。
  • 连接点(Join Point):程序执行过程中的某个特定点,如方法调用或异常抛出。
  • 通知(Advice):在特定连接点执行的动作,包括前置通知、后置通知、环绕通知等。
  • 切入点(Pointcut):匹配连接点的表达式,用于确定哪些连接点需要应用通知。

三、IoC(控制反转)

1. IoC容器工作原理

IoC(控制反转)是Spring框架的核心设计原则。传统编程中,对象自己创建和管理依赖对象;而在IoC模式中,容器负责创建和管理对象,并将依赖注入到对象中。这种模式实现了控制权的反转,降低了组件间的耦合度。

2. Bean的生命周期

Spring Bean的生命周期包括以下阶段:

  1. 实例化
    1. 、构造器实例化 通过无参构造器方法创建,必须要有无参构造方法,否则创建失败

    2. 静态工厂实例化 定义静态工厂类,类中定义静态方法,该静态方法返回实例化的bean对象

    3. 实例化工厂实例化 定义工厂类,类中定义普通方法,方法返回实例化的bean对象

  2. 属性赋值:容器注入Bean的依赖属性。
  3. 初始化:调用初始化方法(如@PostConstruct、init-method)。
  4. 使用:Bean处于就绪状态,可供应用程序使用。
  5. 销毁:容器关闭时调用销毁方法(如@PreDestroy、destroy-method)。

3. 依赖注入方式

1.手动注入
  • set方法实现注入 属性字段要有set方法,通过该属性的set方法设置属性字段的值

  • 构造器实现注入:通过构造器形参设置属性值(问题:无法解决循环依赖)
    • 解决循环依赖-->set方法
  • 静态工厂注入
  • 实例化工厂注入
2.自动注入(重点)

(1)@Resource

默认根据bean标签的id属性值查找,属性字段名和bean里的id属性值相等;

如果属性名称未找到,则会根据类型查找;

默认利用set方法实现注入,可以提供set方法,也可以不提供;

注解可以声明在属性字段上也可以放在set方法上;

可以设置name属性,name属性必须与bean标签上的id属性值一样,设置name无法根据类型查找;

当注入的是接口时,如果有多个实现类则需要使用name属性

(2)@Autowired

默认根据类型查找,与属性字段名无关

可以提供set方法,也可以不提供;

注解可以声明在属性字段上也可以放在set方法上;

可与@Qualifier结合使用,值与bean标签的id属性值对应

开启扫描

(1)@Component 任意类

(2)@Repository Dao层

(3)@Service Service层

(4)@Controller Controller

4. Bean的作用域

Spring Bean支持多种作用域:

  • singleton(默认):每个Spring容器中只有一个Bean实例。
  • prototype:每次请求都会创建一个新的Bean实例。
  • request:每个HTTP请求创建一个Bean实例(仅Web应用)。
  • session:每个HTTP会话创建一个Bean实例(仅Web应用)。
  • application:每个ServletContext创建一个Bean实例(仅Web应用)。

四、AOP(面向切面编程)

Joinpoint 连接点 程序执行过程中能够插入切面的点 类里的方法都可以称为连接点

Pointcut 切入点 程序执行时真正被插入切面的方法

Advice 增强/通知 实际添加的代码逻辑 前置通知、后置通知、最终通知、异常通知、环绕通知

Aspect 切面 将通知应用到切入点的过程

1.xml配置文件方式

引入依赖

pom.xml

applicationContext.xml

注意:环绕通知时需要手动放行

2.注解配置方式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询