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 容器管理对象和增强功能。
相关推荐
计算机毕设指导61 小时前
基于微信小程序技术校园拼车系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
大道之简1 小时前
SpringBoot自定义链路追踪
java·spring boot·spring
Charlie_lll1 小时前
LibreOffice 实现 Word 转 PDF
java·spring boot·pdf·word
hhzz2 小时前
Springboot项目中使用EasyPOI操作Excel(详细教程系列4/4)
java·spring boot·后端·spring·excel·poi·easypoi
charlie1145141912 小时前
输入法处理杂谈——Windows 下的 IMM32 输入法处理机制和Chrome如何桥接TSF输入法
开发语言·chrome·windows·学习·输入法
froginwe112 小时前
Ruby Dir 类和方法
开发语言
代码游侠2 小时前
学习笔记——ARM Cortex-A 裸机开发实战指南
linux·运维·开发语言·前端·arm开发·笔记
星火开发设计2 小时前
表达式与语句:C++ 程序的执行逻辑基础
java·开发语言·c++·学习·知识·表达式
计算机毕设指导62 小时前
基于微信小程序求职招聘-兼职管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·求职招聘