Spring 学习笔记

61 阅读2分钟

一、Spring 基础概念

  1. 广义与狭义

    1. 广义:Spring技术栈(全家桶),包含Spring Framework、Spring Boot等。
    2. 狭义:Spring Framework(基础框架),提供IoC、AOP等核心功能。
  2. 主要模块:核心容器(Core Container)、AOP、ORM集成、事务管理等。

  3. 优势:简化开发、解耦组件、统一管理依赖、支持切面编程。

二、IoC(控制反转)与容器

  1. 组件与容器

    1. 组件:可复用的对象(如Service、Controller),需标记为Bean(@Component等)。

    2. IoC 容器:负责创建、管理组件,常见实现类:

      • ApplicationContext(复杂容器,支持自动装配、事件发布)。
      • BeanFactory(基础容器,延迟初始化)。
  2. 配置方式

    1. 注解方式

      • 标记组件:@Component(及其衍生注解@Service@Controller等)。
      • 扫描组件:<context:component-scan>@ComponentScan
    2. 配置类方式

      • @Configuration定义配置类,替代XML。

      • @Bean替代<bean>标签,显式创建Bean。

三、DI(依赖注入)

  1. 自动装配

    1. @Autowired:按类型注入,配合@Qualifier按名称匹配。
    2. @Resource(JSR-250):按名称或类型注入(优先名称)。
  2. 属性赋值

    1. 引用类型:通过注解自动装配IoC容器中的Bean。

    2. 基本类型:@Value读取配置文件或直接赋值。

四、AOP(面向切面编程)

  1. 核心术语

    1. 切面(Aspect) :封装横切逻辑(如日志、事务)。
    2. 通知(Advice) :切面的具体逻辑,包括前置(@Before)、返回后(@AfterReturning)、异常(@AfterThrowing)、最终(@After)通知。
    3. 切点(Pointcut) :定义通知作用的目标方法(如execution(* com.example.*.*(..)))。
  2. 实现方式

    1. 注解驱动:@Aspect标记切面类,@EnableAspectJAutoProxy开启代理。

    2. 底层依赖:JDK动态代理(接口)或CGLIB代理(类)。

五、事务管理

  • 声明式事务

    • 配置事务管理器(如@EnableTransactionManagement)。

    • @Transactional注解标记方法,配置事务属性(隔离级别、超时、回滚规则等)。

六、开发模式对比

方式核心注解/标签优势
XML配置<bean><context:scan>可视化强,适合复杂场景
注解配置@Component@Autowired简洁,减少配置冗余
配置类@Configuration@Bean全注解化,便于维护