1. Spring 定义 特性 模块 核心总结一句话总结Spring 是轻量级、非入侵式的 Java 框架核心为 IoC控制反转和 AOP面向切面编程通过模块化设计提供解耦、高效的开发能力。核心要点核心特性IoC/DI 解耦对象依赖、AOP 抽离通用逻辑、声明式事务、便捷测试、易集成第三方框架、封装复杂 API核心模块Spring CoreIoC 核心、Context上下文、Web/MVCWeb 开发、DAO/ORM数据访问、AOP切面核心容器为必选其余可选。2. Spring 常用注解 核心总结一句话总结Spring 通过多场景注解简化开发覆盖 Web 请求、Bean 注入、AOP 切面、事务控制四大核心场景。核心要点Web 注解Controller/RestController 处理请求RequestMapping衍生 GetMapping 等映射 URLRequestBody/ResponseBody 处理 JSON容器注解Component/Service 等标识 BeanAutowired/Resource 注入依赖Configuration/Bean 声明配置AOP 注解Aspect 定义切面Before/Around 等声明通知PointCut 定义切点事务注解Transactional 声明方法需要事务支持。3. Spring 设计模式 核心总结一句话总结Spring 大量运用工厂、单例、代理模式分别实现 Bean 创建管理、实例唯一性、AOP 切面增强。核心要点工厂模式BeanFactory/ApplicationContext 作为 Bean 工厂统一创建和获取 Bean单例模式通过 singletonObjects 缓存保证 Bean 唯一性容器初始化时创建代理模式基于 JDK/CGLIB 动态代理实现 AOP如事务、日志。4. Spring 容器 vs Web 容器 核心总结一句话总结Spring 容器管理 Bean 生命周期和依赖Web 容器运行 Web 应用Spring MVC 是 Spring 处理 Web 请求的模块。核心要点Spring 容器IoC 核心管控 Bean 的创建、依赖注入、销毁Web 容器Tomcat/Jetty运行 Servlet/JSP提供 Web 运行环境Spring MVCSpring 的 Web 模块基于 MVC 处理 Web 请求。5. IoC/DI 核心总结一句话总结IoC 是 “控制反转” 思想将对象创建 / 依赖交由 Spring 容器管理DI依赖注入是 IoC 的具体实现方式。核心要点IoC 价值消除硬编码依赖降低耦合、提高灵活性DI 实现支持构造器注入、Setter 注入通过 Autowired/Resource 自动装配核心容器BeanFactory 是基础ApplicationContext 是增强版默认使用。6. BeanFactory vs ApplicationContext 核心总结一句话总结BeanFactory 是 Spring IoC 容器顶层接口基础版ApplicationContext 是其子接口增强版是 Spring 应用默认选择。核心要点核心方法均提供 getBean () 获取 BeanApplicationContext 扩展了层级、可列表化等能力特性差异ApplicationContext 自动初始化 BeanBeanFactory 按需初始化前者功能更全、易用性更高。7. Spring 容器启动 Bean 实例化 核心总结一句话总结Spring 容器启动时加载解析配置生成 Bean 定义实例化 Bean 支持构造方法、静态工厂、实例工厂、FactoryBean 四种方式。核心要点容器启动加载解析 XML / 注解 / Java 配置保存为 Bean 定义实例化方式构造方法主流、静态工厂静态方法创建、实例工厂实例方法创建、FactoryBean自定义实例化逻辑。8. Bean 定义 生命周期 核心总结一句话总结Bean 是 Spring 容器管理的对象支持注解 / XML/Java 配置声明生命周期为 “实例化→属性赋值→初始化→使用→销毁”。核心要点声明方式注解Component主流、XML老旧、Java 配置ConfigurationBeanComponent vs Bean前者类级别自动扫描后者方法级别显式声明适配第三方类生命周期实例化new 对象→属性赋值setter→初始化自定义逻辑→销毁释放资源。9. Autowired vs Resource 自动装配方式 核心总结一句话总结AutowiredSpring 提供按类型注入和 ResourceJavaEE 提供按名称注入实现自动装配Spring 支持 byName/byType/constructor/autodetect 四种装配方式。核心要点IDEA 不推荐 Autowired 字段注入无法注入 final 不可变对象自动装配方式byName按名称、byType按类型、constructor构造器、autodetect自动检测。10. Bean 作用域 核心总结一句话总结Spring Bean 默认单例Singleton支持原型Prototype、Request、Session 等作用域适配不同使用场景。核心要点单例容器内唯一实例默认值减少开销原型每次获取新实例无线程安全问题Web 专属Request单次请求、Session单次会话Spring5 移除 globalSession。11. 单例 Bean 线程安全 核心总结一句话总结无状态单例 Bean 线程安全有状态 Bean 需通过局部变量、ThreadLocal、同步机制或原型作用域解决线程安全问题。核心要点安全前提Bean 无可变成员变量如 Controller/Service 默认安全解决方案局部变量线程私有、ThreadLocal变量副本、同步锁、线程安全工具类AtomicInteger、原型作用域。12. 循环依赖 核心总结一句话总结Spring 通过三级缓存解决单例 Bean 的循环依赖核心是提前暴露未完全初始化的 Bean 引用保证代理对象唯一性。核心要点三级缓存一级完整 Bean、二级未初始化 Bean、三级Bean 工厂解决逻辑实例化时暴露早期引用→依赖方获取缓存引用→初始化完成后移入一级缓存三级缓存必要性为生成代理对象避免 Bean 实例不一致缺二级缓存会抛出 BeanCurrentlyInCreationException。13. Autowired 实现原理 核心总结一句话总结Autowired 通过 AutowiredAnnotationBeanPostProcessor 后置处理器在 Bean 初始化的 populateBean 阶段解析注解并完成属性自动装配。核心要点核心流程doCreateBean ()→populateBean ()→调用后置处理器→解析 Autowired→按类型 / 名称注入依赖关键组件AutowiredAnnotationBeanPostProcessor 是实现自动装配的核心后置处理器。14. AOP 核心总结一句话总结AOP面向切面编程将日志、事务等通用逻辑抽离为切面通过动态代理织入核心业务实现逻辑解耦。核心要点核心概念切面Aspect、切点Pointcut、通知AdviceBefore/Around 等、连接点Join Point织入方式Spring AOP运行时动态代理、AspectJ编译期 / 类加载期织入性能更高与 OOP 关系互补AOP 处理横切逻辑OOP 封装核心业务。15. JDK 动态代理 vs CGLIB 代理 核心总结一句话总结AOP 的两种动态代理方式JDK 基于接口原生、仅代理接口CGLIB 基于继承可代理类、需额外依赖。核心要点JDK 代理依赖接口原生支持创建快、运行稍慢CGLIB 代理依赖继承可代理无接口类创建开销大、运行快选择原则有接口用 JDK无接口用 CGLIB性能敏感且创建频率低可选 CGLIB。16. Spring AOP vs AspectJ AOP 核心总结一句话总结Spring AOP 是运行时增强动态代理、依赖 IoCAspectJ 是编译期增强静态织入、运行开销小。核心要点Spring AOP轻量、集成 IoC仅支持方法级连接点AspectJ功能全支持字段 / 构造方法连接点编译期修改字节码性能更优。17. AOP vs 反射 核心总结一句话总结反射是 Java 内置机制直接操作类 / 方法动态代理基于反射实现拦截方法调用AOP 是动态代理的典型应用。核心要点反射直接检查 / 调用类的方法 / 字段是动态代理的基础动态代理生成代理类拦截方法是 AOP 的实现方式AOP基于动态代理封装专注横切逻辑解耦。18. Spring 事务 核心总结一句话总结Spring 支持声明式AOP 实现、无侵入和编程式显式 API、灵活事务管理通过隔离级别和传播机制控制事务行为。核心要点事务类型声明式Transactional方法级、编程式TransactionTemplate代码块级隔离级别默认用数据库级别支持读未提交、读已提交、可重复读、串行化生效范围Transactional 仅对公开方法生效protected/private 方法不生效。19. 声明式事务实现原理 失效场景 核心总结一句话总结声明式事务基于 AOP 动态代理实现在 Bean 初始化创建代理、方法执行时增强事务多种场景会导致其失效。核心要点实现原理Bean 初始化创建代理→方法执行时拦截→启动 / 提交 / 回滚事务失效场景非公开方法、内部调用、异常被捕获、数据源未配置事务管理器、传播机制配置错误等。20. Spring MVC 工作流程 核心总结一句话总结客户端请求经 DispatcherServlet 分发通过处理器映射器 / 适配器调用 Controller处理后经视图解析器渲染响应。核心要点核心流程发起请求→DispatcherServlet 接收→HandlerMapping 找 Controller→HandlerAdapter 调用方法→返回 ModelAndView→ViewResolver 解析视图→渲染响应核心组件DispatcherServlet前端控制器、HandlerMapping处理器映射、HandlerAdapter处理器适配、ViewResolver视图解析。21. Spring MVC Restful 接口流程 核心总结一句话总结Restful 接口流程与普通 MVC 一致差异在于返回值处理无 ModelAndView直接写入 JSON 响应。核心要点核心流程请求→DispatcherServlet→HandlerMapping→HandlerAdapter→Controller 处理→HandlerMethodReturnValueHandler 处理返回值→写入 JSON 响应关键差异返回 ModelAndView 为 null响应体直接写入 JSON 数据。22. Spring Boot 定义 优点 常用注解 核心总结一句话总结Spring Boot 是 Spring 的扩展基于 “约定大于配置”通过自动配置、Starter 依赖、内嵌容器快速搭建 Spring 应用。核心要点核心优点内嵌容器直接运行 jar、自动配置、Starter 起步依赖、内置监控 / 调试工具Actuator/DevTools核心注解SpringBootApplication组合注解含 EnableAutoConfiguration/Configuration/ComponentScan复用 Spring 原有注解。23. Spring Boot 自动配置原理 核心总结一句话总结Spring Boot 通过 EnableAutoConfiguration 注解借助 AutoConfigurationImportSelector 加载自动配置类按需创建 Bean 实现自动配置。核心要点核心注解SpringBootApplication 包含 EnableAutoConfiguration是自动配置入口核心逻辑AutoConfigurationImportSelector 实现 ImportSelector→selectImports ()→getAutoConfigurationEntry () 加载配置类→条件注册 Bean。24. Spring Boot Starter 原理 核心总结一句话总结Spring Boot Starter 通过 “起步依赖打包相关库 自动配置按需初始化 Bean” 简化项目依赖和配置。核心要点起步依赖预定义依赖组合如 spring-boot-starter-web 包含 Spring MVCTomcatJackson自动配置扫描类路径根据依赖自动创建 / 配置 Bean无需手动配置。25. Spring Boot 启动原理 核心总结一句话总结Spring Boot 由 SpringApplication 类主导启动流程为创建实例→加载配置→初始化上下文→启动内嵌容器→发布启动事件。核心要点核心流程创建 SpringApplication→加载 application.yml 配置→初始化 ApplicationContext→启动 Tomcat→调用 ApplicationRunner→发布启动完成事件包扫描默认扫描 SpringBootApplication 所在包及其子包。26. Spring Boot 与 Spring MVC/Spring 区别 核心总结一句话总结Spring 是基础框架Spring MVC 是其 Web 模块Spring Boot 是 Spring 的扩展简化配置和部署。核心要点Spring MVC vs Spring Boot前者是 Web 开发模块后者是快速开发工具可快速搭建 Spring MVC 项目Spring vs Spring Boot前者是核心框架后者是 “脚手架”提供自动配置、内嵌容器等便捷能力。27. Spring Cloud 核心总结一句话总结Spring Cloud 是基于 Spring Boot 的微服务工具集解决分布式系统的配置管理、服务发现、负载均衡等问题。核心要点核心定位微服务架构解决方案依赖 Spring Boot核心能力配置管理Config、服务发现Eureka/Nacos、负载均衡Ribbon、熔断Hystrix等。整体核心要点回顾Spring 核心是 IoC容器管理 Bean和 AOP切面解耦通用逻辑通过注解简化开发Bean 生命周期、依赖注入由容器管控Spring Boot 基于 “约定大于配置”通过自动配置、Starter 依赖、内嵌容器大幅降低 Spring 应用的配置和部署成本核心问题解决方案循环依赖三级缓存、单例 Bean 线程安全无状态 / ThreadLocal、事务Transactional、AOP动态代理是 Spring 生态高频考点。