Spring 框架详解

Spring 是 Java 领域最流行的企业级应用开发框架之一,提供了一整套轻量级的解决方案,涵盖了依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问、Web 开发、消息传递等多个方面。它极大地简化了 Java EE 开发,成为现代 Java 应用的基础。


1. Spring 核心模块

Spring 由多个模块组成,每个模块负责不同的功能:

1.1 Spring Core(核心容器)

核心容器提供 Spring 运行时的基础,包括:

  • Spring Bean:管理 Java 对象的生命周期
  • Spring Context:提供 BeanFactory 的扩展,支持国际化、资源加载、事件传播等
  • Spring Expression Language(SpEL):用于在 XML 或注解中进行表达式解析

1.2 Spring AOP(面向切面编程)

Spring AOP 允许开发者在不改变业务逻辑的情况下,增加日志、事务、权限控制等功能。基于 动态代理(JDK 代理 & CGLIB)实现。

1.3 Spring Data Access(数据访问)

Spring 提供对 JDBC 和 ORM(如 Hibernate、JPA、MyBatis)的封装:

  • JdbcTemplate:简化 JDBC 操作,避免繁琐的资源管理
  • Transaction Management:提供声明式事务管理,支持多种事务传播行为

1.4 Spring MVC(Web 组件)

Spring MVC 是 Spring 提供的 Web 框架,支持 RESTful API,常见组件:

  • @Controller / @RestController:控制器层
  • @RequestMapping:映射请求路径
  • ViewResolver:视图解析器,支持 JSP、Thymeleaf、Freemarker
  • HandlerInterceptor:拦截器,类似 Servlet Filter

1.5 Spring Security(安全框架)

用于身份认证、权限控制、加密存储,常见功能:

  • 认证(Authentication):基于用户名/密码、OAuth2、JWT
  • 授权(Authorization):角色(Role)与权限(Authority)控制
  • 过滤器链(FilterChain):基于 Servlet 过滤器实现安全控制

1.6 Spring Boot(简化 Spring 配置)

Spring Boot 是基于 Spring 的快速开发框架,提供 自动配置(Auto Configuration)内置服务器(Embedded Tomcat/Jetty),简化 XML 配置,开箱即用。


2. Spring 核心概念

2.1 依赖注入(DI)

DI 使得对象之间的依赖关系由 Spring 负责管理,减少硬编码,提高可维护性。

示例:基于注解的依赖注入

@Component
public class Car {
    private final Engine engine;

    @Autowired
    public Car(Engine engine) {
        this.engine = engine;
    }
}

示例:基于 XML 的依赖注入

<bean id="car" class="com.example.Car">
    <constructor-arg ref="engine"/>
</bean>

2.2 面向切面编程(AOP)

AOP 允许在业务逻辑之外添加额外功能(如日志、事务)。

示例:定义一个日志切面

@Aspect
@Component
public class LoggingAspect {
    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        System.out.println("执行方法:" + joinPoint.getSignature().getName());
    }
}

2.3 事务管理

Spring 提供声明式和编程式事务管理。

示例:声明式事务

@Service
public class UserService {
    @Transactional
    public void registerUser(User user) {
        userDao.save(user);
    }
}

3. Spring Boot 快速入门

3.1 创建 Spring Boot 项目

使用 Spring Boot 可以通过 spring-boot-starter-* 依赖快速搭建应用。

示例:Spring Boot 入口类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

示例:Spring Boot REST API

@RestController
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

4. Spring 生态系统

Spring 提供了丰富的扩展生态,如:

  • Spring Cloud:微服务架构(Eureka、Ribbon、Feign、Hystrix)
  • Spring Batch:批处理框架
  • Spring Data:封装数据库操作(JPA、Redis、MongoDB)
  • Spring Security:身份认证与授权

5. 总结

Spring 是一个功能强大的企业级开发框架,提供了从核心容器、AOP、数据访问到 Web 开发、微服务架构的完整解决方案。Spring Boot 进一步简化了 Spring 的使用,使开发更高效。

Logo

助力合肥开发者学习交流的技术社区,不定期举办线上线下活动,欢迎大家的加入

更多推荐