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 容器管理对象和增强功能。
相关推荐
Maynor9964 小时前
OpenClaw 玩家必备:用 AI 自动追踪社区最新动态
java·服务器·人工智能
aini_lovee4 小时前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab
堕2744 小时前
java数据结构当中的《排序》(一 )
java·数据结构·排序算法
R1nG8634 小时前
多线程安全设计 CANN Runtime关键数据结构的锁优化
开发语言·cann
初次见面我叫泰隆4 小时前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
亓才孓5 小时前
[Class的应用]获取类的信息
java·开发语言
开开心心就好5 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
Never_Satisfied5 小时前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
80530单词突击赢5 小时前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
3GPP仿真实验室5 小时前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd