乐途乐途
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
  • 学习路径
  • 第1章 Spring概述与IoC容器

    • Spring概述与IoC容器
    • Spring Framework 概述
    • IoC 与 DI 核心概念
    • @Configuration 详解
    • @Component 详解
    • @ComponentScan 详解
    • @Import 详解
    • @Profile 详解
    • @PropertySource 详解
    • @Service 详解
    • @Repository 详解
  • 第2章 Bean的定义与依赖注入

    • Bean的定义与依赖注入
    • @Bean 详解
    • @Autowired 详解
    • @Qualifier 详解
    • @Primary 详解
    • @Resource 详解
    • @Inject 详解
    • @Named 详解
    • @Value 详解
    • @Scope 详解
    • @Lazy 详解
  • 第3章 Bean生命周期与作用域

    • Bean生命周期与作用域
    • Bean生命周期概述
    • @PostConstruct
    • @PreDestroy
    • InitializingBean
    • DisposableBean
    • BeanPostProcessor
    • BeanFactoryPostProcessor
  • 第4章 AOP面向切面编程

    • AOP面向切面编程
    • AOP核心概念
    • @EnableAspectJAutoProxy
    • @Aspect
    • @Pointcut
    • @Before
    • @After
    • @AfterReturning
    • @AfterThrowing
    • @Around
  • 第5章 数据访问与事务管理

    • 数据访问与事务管理
    • 数据访问概述
    • @EnableTransactionManagement
    • @Transactional
    • @Transactional 的传播行为
    • @Transactional 的隔离级别
    • @Transactional 的回滚规则
    • @Transactional 的超时与只读属性
    • @TransactionalEventListener
  • 第6章 Spring Boot自动配置基础

    • Spring Boot自动配置基础
    • @SpringBootApplication 注解
    • @EnableAutoConfiguration 注解
    • @ConfigurationProperties 注解
    • @ConditionalOnClass 注解
    • @ConditionalOnMissingBean 注解
    • @ConditionalOnProperty 注解
  • 第7章 从容器到Web: Spring MVC导引

    • Spring MVC 导引
  • 第8章 扩展阅读

    • 扩展阅读
    • Spring 事件机制 — ApplicationEvent / ApplicationListener
    • @EventListener
    • SpEL — Spring 表达式语言
    • 校验 Validation — JSR-303 / JSR-380 Bean Validation
    • 类型转换与数据绑定 — Converter / DataBinder
  • 附录

    • Spring Framework 专业术语
    • Spring 核心知识点
    • Spring 面试高频考点
    • Spring 核心注解速查表

Spring Framework 专业术语

基础概念

Spring Framework 开源的Java全栈应用程序框架,提供IoC容器、AOP、数据访问、Web开发等核心基础设施。

Spring Boot 基于Spring Framework的快速开发框架,提供自动配置、起步依赖和嵌入式服务器,简化应用搭建和部署。

Spring 生态系统(Spring Ecosystem) 以Spring Framework为核心,包含Spring Boot、Spring Data、Spring Security、Spring Cloud等一系列项目的总称。

IoC(Inversion of Control,控制反转) 设计原则,将对象依赖的管理权从程序内部反转给外部容器,降低组件间的耦合度。

DI(Dependency Injection,依赖注入) IoC的具体实现方式,容器在运行时自动将依赖对象注入到目标组件中,而非由组件自行创建。

AOP(Aspect-Oriented Programming,面向切面编程) 通过预编译或运行期动态代理,将横切关注点(如日志、事务)与业务逻辑分离的编程范式。

Bean 由Spring IoC容器实例化、组装和管理的对象,是Spring应用的基本构建单元。

BeanDefinition 描述Bean的元数据对象,包含类名、作用域、生命周期回调、依赖项等配置信息。

BeanFactory Spring最基础的IoC容器接口,提供Bean的实例化、配置和查找能力,延迟加载Bean。

ApplicationContext BeanFactory的子接口,扩展了事件发布、资源加载、国际化等企业级功能,是Spring推荐使用的容器。

容器(Container) Spring中负责管理Bean生命周期和依赖关系的运行时环境,通常指ApplicationContext或BeanFactory。

配置元数据(Configuration Metadata) 描述Bean如何被创建、组装和初始化的信息,可通过XML、注解或Java配置类提供。

IoC与依赖注入

构造器注入(Constructor Injection) 通过构造函数传入依赖对象,Spring官方推荐的注入方式,确保依赖不可变且必填。

Setter注入(Setter Injection) 通过setter方法传入依赖对象,适用于可选依赖,允许在对象创建后重新配置。

字段注入(Field Injection) 直接在字段上使用@Autowired注入,代码简洁但不利于测试和不可变设计,不推荐优先使用。

@Autowired Spring提供的自动装配注解,按类型匹配将依赖注入到构造器、字段或方法中。

@Qualifier 与@Autowired配合使用,按名称精确指定需要注入的Bean,解决同类型多实例的歧义。

@Primary 标记多个同类型Bean中的首选实例,当存在歧义时优先注入被标记的Bean。

@Value 用于注入配置属性值,支持SpEL表达式,可将外部配置中的字面量注入到字段或参数中。

@Resource JSR-250标准注解,默认按名称装配依赖,是Spring@Autowired的替代方案之一。

@Component 通用组件注解,标记类为Spring管理的Bean,是@Service、@Repository的元注解。

@Service 标记业务层组件,语义上表示该类包含业务逻辑,与@Component功能相同但意图更明确。

@Repository 标记数据访问层组件,自动启用异常转换(将持久层异常转为Spring的DataAccessException)。

@Configuration 标记类为Spring配置类,其中定义的@Bean方法将被容器处理,替代传统XML配置。

@Bean 在@Configuration类的方法上使用,方法返回值将被注册为Spring容器中的Bean实例。

@ComponentScan 配置Spring自动扫描并注册指定包路径下的@Component及其派生注解标记的类。

@Import 在配置类中导入其他配置类或组件类,实现模块化配置组合。

@Profile 指定Bean或配置类仅在特定环境配置(profile)激活时才被注册,支持多环境部署。

singleton 默认Bean作用域,每个Spring容器只创建一个实例,全局共享。

prototype 每次请求Bean时都创建一个新实例,容器仅负责实例化而不管理完整生命周期。

request Web环境下每个HTTP请求创建一个Bean实例,请求结束后销毁。

session Web环境下每个HTTP会话创建一个Bean实例,会话结束后销毁。

application Web环境下每个ServletContext创建一个Bean实例,全局共享。

websocket WebSocket环境下每个WebSocket会话创建一个Bean实例。

实例化(Instantiation) Bean生命周期的第一阶段,容器通过构造器或工厂方法创建Bean的原始对象。

属性填充(Population) Bean生命周期的第二阶段,容器将配置值和依赖引用注入到Bean的属性中。

初始化(Initialization) Bean生命周期的第三阶段,执行自定义初始化逻辑,如@PostConstruct或InitializingBean回调。

销毁(Destruction) Bean生命周期的最后阶段,容器关闭时调用自定义销毁逻辑,如@PreDestroy或DisposableBean回调。

循环依赖(Circular Dependency) 两个或多个Bean相互依赖形成闭环,Spring通过三级缓存机制解决单例作用域的循环依赖。

三级缓存 Spring解决单例循环依赖的内部机制,通过提前暴露半成品Bean的ObjectFactory来打破依赖闭环。

@PostConstruct JSR-250注解,标记在依赖注入完成后执行的初始化方法,用于替代InitializingBean。

@PreDestroy JSR-250注解,标记在容器销毁Bean之前执行的清理方法,用于替代DisposableBean。

InitializingBean Spring接口,实现afterPropertiesSet()方法可在Bean属性设置完成后执行初始化逻辑。

DisposableBean Spring接口,实现destroy()方法可在容器销毁Bean时执行资源释放逻辑。

BeanPostProcessor 扩展接口,在Bean初始化前后提供自定义处理逻辑,可对Bean实例进行包装或修改。

BeanFactoryPostProcessor 扩展接口,在BeanDefinition加载后、Bean实例化前对容器配置元数据进行修改。

AOP

Aspect(切面) 横切关注点的模块化封装,包含通知(Advice)和切入点(Pointcut)的集合。

Join Point(连接点) 程序执行过程中的某个特定点,如方法调用、异常抛出等,Spring AOP仅支持方法级别的连接点。

Pointcut(切入点) 匹配连接点的断言表达式,定义通知应在哪些方法上生效。

Advice(通知/增强) 切面在特定连接点执行的动作,包括Before、After、Around等类型。

Weaving(织入) 将切面应用到目标对象以创建代理对象的过程,Spring AOP在运行时通过代理完成织入。

Proxy(代理) 包装目标对象的中间对象,客户端通过代理间接调用目标方法,从而在不修改源码的情况下插入增强逻辑。

Target(目标对象) 被切面织入通知的原始业务对象,即代理所包装的真实对象。

JDK动态代理 基于接口的代理机制,要求目标类实现至少一个接口,Spring AOP的默认代理方式。

CGLIB代理 基于继承的代理机制,通过生成目标类的子类实现代理,适用于未实现接口的类。

Before Advice 在目标方法执行前运行的通知,无法阻止方法执行(除非抛出异常)。

After Advice 在目标方法执行后运行的通知,无论方法是否正常返回都会执行。

AfterReturning Advice 在目标方法成功返回后运行的通知,可访问返回值;若方法抛出异常则不会执行。

AfterThrowing Advice 在目标方法抛出异常后运行的通知,可访问抛出的异常对象。

Around Advice 包围目标方法的通知,可在方法调用前后自定义行为,并决定是否执行原方法。

@Aspect AspectJ注解,标记类为切面类,需配合@EnableAspectJAutoProxy使用。

@Pointcut 定义可复用的切入点表达式,通常与@Aspect配合使用以简化通知声明。

@Before 声明前置通知,指定匹配的切入点,在目标方法执行前触发。

@After 声明最终通知,指定匹配的切入点,在目标方法结束后触发(类似finally)。

@Around 声明环绕通知,需手动调用ProceedingJoinPoint.proceed()来执行目标方法。

@EnableAspectJAutoProxy 在配置类上使用,开启Spring对@AspectJ风格切面的自动代理支持。

Introduction(引介) 为现有类动态添加新接口实现的机制,允许在不修改源码的情况下扩展类的功能。

数据访问与事务

DAO(Data Access Object,数据访问对象) 封装对数据源访问逻辑的对象,将数据访问层与业务逻辑层分离。

Template模式(Template Pattern) Spring数据访问的核心设计模式,通过模板类封装资源获取、异常转换和清理等重复代码。

JdbcTemplate Spring JDBC的核心模板类,简化JDBC操作,自动处理连接获取、语句创建和资源释放。

声明式事务(Declarative Transaction) 通过注解或XML配置管理事务,无需在业务代码中显式编写事务控制逻辑。

@Transactional 声明式事务的核心注解,标记方法或类需要在事务上下文中执行,支持传播行为和隔离级别配置。

REQUIRED 默认事务传播行为,若当前存在事务则加入,否则新建一个事务。

SUPPORTS 事务传播行为,若当前存在事务则加入,否则以非事务方式执行。

MANDATORY 事务传播行为,要求当前必须存在事务,否则抛出异常。

REQUIRES_NEW 事务传播行为,无论当前是否存在事务都新建一个独立事务,并挂起已有事务。

NOT_SUPPORTED 事务传播行为,以非事务方式执行,若当前存在事务则将其挂起。

NEVER 事务传播行为,要求以非事务方式执行,若当前存在事务则抛出异常。

NESTED 事务传播行为,在当前事务中创建一个嵌套事务(savepoint),可独立回滚。

DEFAULT 默认事务隔离级别,使用底层数据源的默认设置。

READ_UNCOMMITTED 最低隔离级别,允许读取未提交的数据,可能出现脏读、不可重复读和幻读。

READ_COMMITTED 允许读取已提交的数据,可防止脏读,但可能出现不可重复读和幻读。

REPEATABLE_READ 确保在同一事务中多次读取同一数据结果一致,可防止脏读和不可重复读,但可能出现幻读。

SERIALIZABLE 最高隔离级别,完全串行化执行,可防止所有并发问题,但性能开销最大。

ORM(Object-Relational Mapping,对象关系映射) 在对象模型与关系数据库之间建立映射的技术,使开发者能以面向对象方式操作数据。

JPA(Java Persistence API) Java标准的ORM规范,定义对象持久化的API和注解,Hibernate是其主流实现之一。

Hibernate 流行的开源ORM框架,实现了JPA规范,提供强大的对象-关系映射和查询能力。

Spring Data JPA Spring Data项目的一部分,基于JPA规范简化数据访问层开发,提供Repository接口和动态查询。

PlatformTransactionManager Spring事务管理的核心策略接口,抽象了不同事务技术(JDBC、JTA、JPA等)的统一事务操作。

DataSourceTransactionManager 基于JDBC DataSource的本地事务管理器,适用于单数据源场景。

JpaTransactionManager 基于JPA EntityManagerFactory的事务管理器,适用于JPA/Hibernate环境。

其他

JSR-330 Java依赖注入标准规范,定义了@Inject、@Named等注解,Spring完全兼容该规范。

@Inject JSR-330标准注解,功能与@Autowired类似,按类型自动装配依赖。

@Named JSR-330标准注解,功能与@Component和@Qualifier类似,用于标识Bean名称。

JSR-250 Java通用注解标准规范,定义了@PostConstruct、@PreDestroy、@Resource等生命周期和资源注解。

下一页
Spring 核心知识点