Java 中的 Spring 框架

一、Spring 框架核心定位

Spring 是 Java 生态中一站式的企业级应用开发框架,核心目标是简化 Java 开发,解决企业级开发中的复杂性(如对象创建、依赖管理、事务控制、跨环境适配等)。它不是替代 Java EE,而是对 Java EE 技术(如 Servlet、JDBC、JPA 等)进行封装和增强,目前 Spring Framework 6.x 是主流版本,适配 Java 17+,并全面支持模块化、响应式编程。

二、Spring 核心优势(核心设计思想)

  1. 控制反转(IoC,Inversion of Control)
    • 通俗理解:原本由开发者手动 new 对象、管理对象依赖,现在交给 Spring 容器统一管理,开发者只需定义对象,由容器负责创建、组装和销毁。
    • 实现方式:依赖注入(DI,Dependency Injection),包括构造器注入、Setter 注入、字段注入(不推荐),核心是解耦,让代码更易测试、维护。
  2. 面向切面编程(AOP,Aspect-Oriented Programming)
    • 核心作用:将日志、事务、权限校验等 "横切逻辑" 与业务逻辑分离,避免代码冗余。比如给所有接口添加统一的日志记录,无需在每个接口方法里写日志代码。
    • 关键概念:切面(Aspect)、切点(Pointcut)、通知(Advice,如前置 / 后置 / 异常通知)。
  3. 轻量级与模块化
    • 轻量级:核心包体积小,无侵入式设计,可按需引入模块(如只用到 IoC 就只引入 spring-core),不强制绑定全量功能。
    • 模块化:Spring Framework 拆分为核心容器、AOP、数据访问、Web、测试等模块,可灵活组合。

三、Spring 核心组件

组件 / 模块 核心作用 常用类 / 注解
Spring Core(核心容器) 实现 IoC 容器,管理 Bean 的生命周期 ApplicationContext@Component@Autowired
Spring Context 扩展 Core 功能,提供资源加载、国际化、事件发布等 @ValueEnvironment
Spring AOP 实现 AOP 编程,支持切面逻辑织入 @Aspect@Before@AfterReturning@Around
Spring JDBC 封装 JDBC,简化数据库操作,减少样板代码 JdbcTemplateNamedParameterJdbcTemplate
Spring Transaction 声明式事务管理,无需手动控制事务提交 / 回滚 @Transactional

四、入门级核心代码示例(Spring IoC+DI)

1. 定义 Bean(业务类)

java

运行

复制代码
// 标记为Spring管理的Bean
@Component
public class UserService {
    // 依赖注入(构造器注入,推荐方式)
    private final UserDao userDao;

    // 构造器注入,Spring会自动匹配并注入UserDao实例
    public UserService(UserDao userDao) {
        this.userDao = userDao;
    }

    public void addUser() {
        userDao.insertUser();
        System.out.println("用户添加成功");
    }
}

// 数据访问层Bean
@Component
public class UserDao {
    public void insertUser() {
        System.out.println("执行数据库插入操作");
    }
}
2. 启动 Spring 容器并获取 Bean

java

运行

复制代码
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class SpringDemo {
    public static void main(String[] args) {
        // 初始化Spring上下文(基于注解配置)
        AnnotationConfigApplicationContext context = 
            new AnnotationConfigApplicationContext("com.example");
        
        // 从容器中获取UserService实例(无需手动new)
        UserService userService = context.getBean(UserService.class);
        
        // 调用业务方法
        userService.addUser();
        
        // 关闭容器
        context.close();
    }
}
输出结果:

plaintext

复制代码
执行数据库插入操作
用户添加成功

五、Spring 生态延伸

Spring Framework 是基础,在此之上衍生出了更贴合实际开发的生态组件:

  • Spring Boot:简化 Spring 应用搭建,自动配置、内嵌服务器、起步依赖,快速开发微服务。
  • Spring Cloud:基于 Spring Boot 实现微服务治理(服务注册发现、配置中心、熔断降级等)。
  • Spring Security:处理认证、授权、防跨站等安全问题。

总结

  1. Spring 核心是IoC(依赖注入)AOP,核心目标是简化开发、解耦代码。
  2. Spring Framework 是基础,Spring Boot/Cloud 等是其生态延伸,覆盖从单体到微服务的全场景。
  3. 开发中核心是通过注解(如 @Component、@Autowired、@Transactional)利用 Spring 容器管理对象和增强功能。
相关推荐
长不胖的路人甲4 小时前
CAS讲解
java
数聚天成DeepSData5 小时前
企业知识库 RAG 数据准备与文档清洗:Dify、RAGFlow、扣子选型指南
开发语言·人工智能·机器学习·自然语言处理·sentinel·cocos2d
我是唐青枫5 小时前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java·开发语言·logback
aramae5 小时前
C++11:现代C++的里程碑
c语言·开发语言·c++·windows·git·后端
XS0301065 小时前
JavaEE 核心知识
java·java-ee
weixin_446729165 小时前
java实现发送邮件
java·开发语言
QCoding5 小时前
Java转AI第三课:Spring AI如何把100行HTTP代码缩减到10行?
java·人工智能
振宇i5 小时前
Java集成openfeign远程RPC调用教程
java·rpc·openfeign
wear工程师5 小时前
volatile 这题别只答「可见性」:面试官真正想听的是这条 happens-before
java·jvm
摇滚侠5 小时前
Java 全栈开发实战教程 01 课程简介
java