《Spring 实战》

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

《Spring实战》介绍Spring核心为依赖注入与AOP,其使命是简化Java开发、促进松耦合,采用POJO轻量编程、依赖注入、切面声明式编程和模板减少样板代码四种策略。Spring容器负责创建、装配、配置并管理对象生命周期,常用应用上下文包括AnnotationConfig和ClassPathXml等。装配Bean有自动化配置(组件扫描与自动装配,推荐)、Java显式配置和XML配置三种方式。

🔎

延伸解读

耦合并非越少越好

文章指出紧密耦合的代码难测试、难复用、难理解,但一定程度的耦合又是必须的。例如在构造函数中直接 new 依赖对象会导致紧密耦合,而通过构造函数传入依赖对象、由框架生成实例,则能在保留必要协作关系的同时降低耦合。这提醒读者,依赖注入的目标不是消除所有依赖,而是把对象创建与使用分离,让组件之间通过接口协作,从而提升可测试性和可维护性。

容器管理Bean生命周期的意义

Spring 容器全权负责对象的创建、装配、配置和生命周期管理。文章列出了 bean 从实例化、属性注入、后置处理器处理、初始化到可被应用使用,再到销毁的典型过程。理解这一过程有助于读者在开发中判断何时适合使用初始化或销毁回调,以及后置处理器在 bean 准备阶段的作用。这也说明 Spring 应用中的对象并非由业务代码随意 new 出来,而是交由容器统一管理。

三种装配方式的选择顺序

文章明确推荐自动化配置优先,其次是基于 Java 的显式配置,最后是基于 XML 的显式配置。自动化配置通过组件扫描发现 bean,再通过自动装配建立依赖;Java 配置使用 @Configuration 等注解;XML 配置则依赖类路径或文件系统中的 XML 文件。这一优先级对实际开发有直接参考价值:优先减少显式配置,只有在需要更明确控制或维护遗留配置时,再考虑 Java 或 XML 方式。

❓

Q&A

Spring框架最核心的两个特性是什么?

Spring功能底层依赖两个核心特性:依赖注入(DI)和面向切面编程(AOP)。DI让相互协作的软件组件保持松散耦合,AOP允许把遍布应用各处的功能分离出来形成可重用的组件。

Spring为了简化Java开发采取了哪些关键策略?

Spring采取4种关键策略:1)基于POJO的轻量级和最小侵入性编程;2)通过依赖注入和面向接口实现松耦合;3)基于切面和惯例进行声明式编程;4)通过切面和模板减少样板式代码。

Spring容器的主要职责是什么?

Spring容器负责创建对象、装配对象、配置对象并管理对象的整个生命周期。应用对象生存于Spring容器中。

常用的Spring应用上下文有哪些?

常用的Spring应用上下文包括:AnnotationConfigApplicationContext(Java配置类)、AnnotationConfigWebApplicationContext(Java配置类加载Spring web应用上下文)、ClassPathXmlApplicationContext(类路径下的xml文件)、FileSystemXmlApplicationContext(文件系统的xml文件)、XmlWebApplicationContext(web应用下xml文件)。

Spring中装配Bean有哪几种方式?推荐使用哪种?

Spring中装配Bean有三种主要方式:自动化配置、基于Java的显式配置以及基于XML的显式配置。推荐使用顺序优先级递减,即自动化配置最推荐,其次Java显式配置,最后XML显式配置。

Spring自动化配置是如何实现的?

Spring自动化配置从两个角度实现:组件扫描(发现应用上下文中的bean)和自动装配(建立bean之间的依赖)。组件扫描可通过JavaConfig的@ComponentScan注解或XmlConfig的<context:component-scan>元素实现;自动装配可使用@Autowired或@Inject注解。

🏷️

标签

➡️

继续阅读