Spring 是一个开源的 Java 企业级开发框架,最核心的特点是:
它有完整的生态:
现在很多 Java 项目基本都是以 Spring Boot 为基础搭建的。
Inversion of Control
它是一种思想,核心理念是:把“创建对象 + 管理依赖”的控制权从代码中交给框架(比如 Spring)。
DI(依赖注入)
@Autowired
)。关系总结:
概念 | 说明 |
---|---|
IOC | 是理念(控制权的转移) |
DI | 是手段(实现方式) |
在 Spring 中:
new
对象Spring的核心理念之一是 IOC(控制反转),即通过 Spring 容器来管理对象的创建和生命周期。这些对象都可以称为 Bean。
ApplicationContext
)管理的对象@Component
、@Service
、@Repository
、@Controller
等)定义的,并由 Spring 容器自动创建和管理。1.通过注解定义,使用注解标记类为 Spring Bean:
@Service
public class UserService {
// 业务逻辑
}
2.通过 XML 配置定义 Bean:在 applicationContext.xml 文件中,通过 标签定义 Bean。
<bean id="userService" class="com.example.UserService"/>
3.通过 Java 配置类定义 Bean:使用 @Configuration
、 @Bean
等注解来定义 Bean。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
Spring 允许你为 Bean 配置不同的作用域(scope),决定它的生命周期和创建时机。常见的作用域有:
AOP(面向切面编程)是一种编程思想,它的目标是将程序中那些 横切关注点(cross-cutting concerns)从主业务逻辑中分离出来。
举例说明:
在很多业务方法中都要做这些事:
这些跟业务逻辑(比如"下单"、“支付”、“查询用户信息”)无关但又必须做的操作就是横切关注点。
把通用代码抽出来统一处理,让业务代码更干净、更专注。
Spring 提供了基于 代理机制(Proxy) 的 AOP 实现方式:
名称 | 说明 |
---|---|
切面(Aspect) | 封装横切逻辑的类,比如日志、事务、权限检查等 |
连接点(Join Point) | 程序中可以插入切面逻辑的位置(通常是方法调用) |
切入点(Pointcut) | 定义要拦截哪些方法 |
通知(Advice) | 指定在什么时候执行横切逻辑(比如:方法前/后/异常时) |
织入(Weaving) | 将切面代码织入到目标对象的过程 |
日常开发中我们可能感觉不到AOP的存在,是因为很多AOP功能是Spring框架"自动实现"的,开发者实际上是在隐式使用AOP。
功能 | 实现方式 | AOP实现机制 |
---|---|---|
@Transactional 注解 |
开启事务管理 | 通过AOP织入事务逻辑 |
@Async 注解 |
方法异步调用 | 通过AOP织入异步代理逻辑 |
@Cacheable 注解 |
缓存处理 | 通过AOP织入缓存判断逻辑 |
@PreAuthorize 注解 |
方法级安全控制 | 基于Spring Security的AOP实现 |
Controller参数校验 | @Valid 注解校验 |
通过AOP织入参数校验逻辑 |
@Retryable 注解 |
方法失败自动重试 | 基于Spring Retry的AOP实现 |
实现特点:
"生态"指的是围绕Spring核心框架,衍生出来的一整套子项目和解决方案,它们可以无缝协作,覆盖一个大型项目从开发、测试、部署、运维到监控的整个生命周期。
模块 | 功能描述 |
---|---|
Spring Framework | 核心框架,提供IOC、AOP、事务管理等基础功能 |
Spring Boot | 快速构建独立运行的Spring应用,简化配置、开箱即用 |
Spring MVC/WebFlux | MVC是传统同步模型,WebFlux是响应式非阻塞模型 |
Spring Data | 简化数据库操作(支持JPA、MongoDB、Redis等) |
Spring Security | 提供认证和授权的安全框架 |
Spring Cloud | 微服务架构解决方案(服务注册发现、配置中心、断路器等) |
Spring Batch | 批处理任务解决方案(大数据量、定时处理) |
Spring Integration | 面向消息驱动架构的集成方案(适合构建分布式系统) |
Spring Test | 提供测试支持,方便进行单元测试和集成测试 |
✅ 统一风格:所有模块遵循同一套设计理念,学习一个就能用一片
✅ 高扩展性:可以单独使用部分模块,也能组合多个模块构建复杂系统
✅ 社区活跃:拥有强大的开源社区和丰富的生态资源
✅ 兼容性好:与Docker、Kubernetes、主流消息队列、数据库和云平台无缝集成
✅ 持续演进:定期更新迭代,保持技术先进性
是 Spring 官方推出的一个快速开发框架,用于简化 Spring 应用的搭建和开发过程,即spring快速开发脚手架,可对比vue开发脚手架进行学习。
目标:
Spring 是一个功能强大但配置相对复杂的底层框架;
Spring Boot 是基于 Spring 的快速开发工具,提供自动配置、依赖整合、快速启动等能力。
对比项 | Spring | Spring Boot |
---|---|---|
本质 | 底层开发框架 | 快速开发框架(工具 + 配置封装) |
配置方式 | 手动配置较多(XML/Java) | 自动配置为主,默认约定优于配置 |
启动方式 | 通常打包部署到容器 | 内嵌 Tomcat,main 方法直接运行 |
目标 | 灵活,功能全面 | 简化开发,提高效率 |
spring-boot-starter-xxx
快速引入一整套所需依赖。application.yml
或 application.properties
)。SpringApplication.run()
启动整个项目。