一、Spring 基础概念
-
广义与狭义:
- 广义:Spring技术栈(全家桶),包含Spring Framework、Spring Boot等。
- 狭义:Spring Framework(基础框架),提供IoC、AOP等核心功能。
-
主要模块:核心容器(Core Container)、AOP、ORM集成、事务管理等。
-
优势:简化开发、解耦组件、统一管理依赖、支持切面编程。
二、IoC(控制反转)与容器
-
组件与容器:
-
组件:可复用的对象(如Service、Controller),需标记为Bean(@Component等)。
-
IoC 容器:负责创建、管理组件,常见实现类:
ApplicationContext(复杂容器,支持自动装配、事件发布)。BeanFactory(基础容器,延迟初始化)。
-
-
配置方式:
-
注解方式:
- 标记组件:
@Component(及其衍生注解@Service、@Controller等)。 - 扫描组件:
<context:component-scan>或@ComponentScan。
- 标记组件:
-
配置类方式:
-
@Configuration定义配置类,替代XML。 -
@Bean替代<bean>标签,显式创建Bean。
-
-
三、DI(依赖注入)
-
自动装配:
@Autowired:按类型注入,配合@Qualifier按名称匹配。@Resource(JSR-250):按名称或类型注入(优先名称)。
-
属性赋值:
-
引用类型:通过注解自动装配IoC容器中的Bean。
-
基本类型:
@Value读取配置文件或直接赋值。
-
四、AOP(面向切面编程)
-
核心术语:
- 切面(Aspect) :封装横切逻辑(如日志、事务)。
- 通知(Advice) :切面的具体逻辑,包括前置(
@Before)、返回后(@AfterReturning)、异常(@AfterThrowing)、最终(@After)通知。 - 切点(Pointcut) :定义通知作用的目标方法(如
execution(* com.example.*.*(..)))。
-
实现方式:
-
注解驱动:
@Aspect标记切面类,@EnableAspectJAutoProxy开启代理。 -
底层依赖:JDK动态代理(接口)或CGLIB代理(类)。
-
五、事务管理
-
声明式事务:
-
配置事务管理器(如
@EnableTransactionManagement)。 -
@Transactional注解标记方法,配置事务属性(隔离级别、超时、回滚规则等)。
-
六、开发模式对比
| 方式 | 核心注解/标签 | 优势 |
|---|---|---|
| XML配置 | <bean>、<context:scan> | 可视化强,适合复杂场景 |
| 注解配置 | @Component、@Autowired | 简洁,减少配置冗余 |
| 配置类 | @Configuration、@Bean | 全注解化,便于维护 |