Java Spring 框架
Spring 是一个开源的 Java 企业级应用开发框架,由 Rod Johnson 于 2003 年创建。它提供了一套全面的编程和配置模型,用于构建现代化的 Java 应用程序。
Spring 框架的核心特点:
- 轻量级:Spring 的核心容器非常小巧
- 依赖注入(DI):通过 IoC(控制反转)容器管理对象依赖关系
- 面向切面编程(AOP):支持横切关注点的模块化
- 一站式解决方案:提供数据访问、事务管理、Web 开发等模块
Spring 框架的核心模块
1. 核心容器 (Core Container)
核心容器是 Spring 框架的基础,包括:
- Beans:提供 BeanFactory,实现控制反转模式
- Core:框架的基础工具类
- Context:建立在 Core 和 Beans 模块之上,提供框架式访问对象的方式
- SpEL:Spring 表达式语言
2. 数据访问/集成 (Data Access/Integration)
- JDBC:简化 JDBC 使用
- ORM:支持 Hibernate、JPA 等 ORM 框架
- JMS:Java 消息服务支持
- Transactions:声明式事务管理
3. Web 模块
- Web:基本的 Web 功能
- Web-MVC:实现了 MVC 设计模式的 Web 框架
- Web-Socket:WebSocket 支持
- Web-Flux:响应式 Web 框架
4. 其他重要模块
- AOP:面向切面编程支持
- Aspects:AspectJ 集成
- Instrumentation:类加载器实现和类检测支持
- Test:支持 JUnit 和 TestNG 测试框架
Spring 的核心概念
1. 控制反转 (IoC) 和依赖注入 (DI)
IoC 是 Spring 的核心概念,它将对象的创建和依赖关系的管理从应用程序代码转移到容器中。
实例
// 传统方式
public class UserService {
private UserRepository userRepository = new UserRepositoryImpl();
}
// Spring DI 方式
public class UserService {
private UserRepository userRepository;
// 通过构造器注入
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
public class UserService {
private UserRepository userRepository = new UserRepositoryImpl();
}
// Spring DI 方式
public class UserService {
private UserRepository userRepository;
// 通过构造器注入
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
2. 面向切面编程 (AOP)
AOP 允许将横切关注点(如日志、事务、安全等)从业务逻辑中分离出来。
实例
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("方法执行前: " + joinPoint.getSignature().getName());
}
}
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("方法执行前: " + joinPoint.getSignature().getName());
}
}
3. Spring Bean
Spring 容器管理的对象称为 Bean。Bean 可以通过 XML 配置或注解方式定义。
实例
// 注解方式定义 Bean
@Component
public class MyService {
// ...
}
// XML 配置方式
<bean id="myService" class="com.example.MyService"/>
@Component
public class MyService {
// ...
}
// XML 配置方式
<bean id="myService" class="com.example.MyService"/>
Spring Boot 简介
Spring Boot 是 Spring 框架的扩展,旨在简化 Spring 应用的初始搭建和开发过程。
Spring Boot 主要特性:
- 自动配置:根据类路径中的 jar 包自动配置 Spring 应用
- 起步依赖:简化依赖管理
- 内嵌服务器:无需部署 WAR 文件
- Actuator:提供生产级监控功能
创建一个简单的 Spring Boot 应用:
实例
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@RestController
class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@RestController
class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
Spring 框架的优势
- 模块化设计:可以根据需要选择使用哪些模块
- 简化开发:通过 DI 和 AOP 减少样板代码
- 测试友好:设计时就考虑了可测试性
- 强大的生态系统:丰富的第三方库和扩展
- 活跃的社区:持续更新和维护
学习 Spring 的建议路径
- 先掌握 Java 核心知识
- 学习 Spring Core 和 DI/AOP 概念
- 实践 Spring MVC 开发 Web 应用
- 学习 Spring Data 进行数据库操作
- 掌握 Spring Boot 简化开发流程
- 探索 Spring Cloud 构建微服务
Spring 框架是现代 Java 开发的基础,掌握它将大大提升你的开发效率和项目质量。
点我分享笔记