Spring 框架及其主要模块

embedded/2025/2/8 7:45:14/

1. 什么是 Spring 框架?

Spring 是一个 轻量级、开源的 Java 应用程序框架,用于简化企业级应用程序的开发。它的主要目标是通过 控制反转(IoC)面向切面编程(AOP) 来解耦代码,使应用程序更具可维护性和扩展性。Spring 主要用于 依赖注入、事务管理、MVC 结构、数据访问、远程调用 等企业级应用开发。

Spring 作为一个完整的应用框架,可以与多种技术整合,如 Hibernate、MyBatis、Struts、JDBC,并支持 微服务架构,如 Spring Boot 和 Spring Cloud。


2. Spring 的七大核心模块

Spring 框架由多个模块组成,每个模块都有特定的功能,下面逐一讲解:

1. Core 模块(核心容器,IoC/DI)

核心功能:

  • 提供 依赖注入(Dependency Injection,DI),实现 控制反转(Inversion of Control,IoC)
  • Spring 容器会管理 Bean 的生命周期,并自动处理 Bean 之间的依赖关系。
  • 主要包括 BeanFactoryApplicationContext 等核心组件。

关键类和接口:

  • BeanFactory:最基本的 IoC 容器,延迟加载 Bean。
  • ApplicationContext:高级 IoC 容器,提供事件监听、国际化等功能。
  • XmlBeanFactory(已废弃):基于 XML 配置的 Bean 工厂。

示例:

<!-- 定义 Bean -->
<bean id="userService" class="com.example.UserService"><property name="userRepository" ref="userRepository"/>
</bean>
// 从容器中获取 Bean
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = context.getBean(UserService.class);

2. AOP 模块(面向切面编程)

核心功能:

  • AOP(Aspect-Oriented Programming) 允许开发者在不修改原代码的情况下,动态地增强代码(如日志记录、事务管理、权限控制)。
  • 通过 切面(Aspect)、通知(Advice)、切点(Pointcut)、连接点(JoinPoint) 实现方法级别的增强。

关键组件:

  • @Aspect:定义切面类。
  • @Pointcut:定义切入点(在哪些方法上生效)。
  • @Before@After@Around 等注解:定义不同类型的增强。

示例:

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

3. ORM 模块(数据库访问支持)

核心功能:

  • Spring 提供对主流 ORM(对象关系映射)框架 的集成,如 Hibernate、MyBatis、JPA,简化数据库访问代码。

特点:

  • 统一事务管理
  • 通过 JdbcTemplate 统一管理数据库连接

示例(Spring + MyBatis):

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/>
</bean>
@Repository
public class UserRepository {@Autowiredprivate SqlSessionFactory sqlSessionFactory;public User getUserById(int id) {SqlSession session = sqlSessionFactory.openSession();return session.selectOne("getUserById", id);}
}

4. DAO 模块(数据访问层,JDBC 封装)

核心功能:

  • JdbcTemplate:封装 JDBC 操作,减少 样板代码(如连接、关闭数据库)。
  • 事务管理:提供 声明式事务管理(@Transactional),避免手动管理事务。

示例:

@Service
public class UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;public void addUser(String name) {String sql = "INSERT INTO users (name) VALUES (?)";jdbcTemplate.update(sql, name);}
}

5. Web 模块(Web 开发支持)

核心功能:

  • 提供 Spring Web 相关功能,如 Servlet 监听器、Web 应用上下文、文件上传等。
  • 支持 Spring MVC,也可以整合 Struts、JSF、GWT 等框架。

示例(Spring MVC 控制器):

@Controller
@RequestMapping("/user")
public class UserController {@GetMapping("/{id}")public String getUser(@PathVariable int id, Model model) {model.addAttribute("user", new User(id, "张三"));return "userDetail";}
}

6. Context 模块(应用上下文)

核心功能:

  • 扩展 IoC 容器,提供 事件传播、国际化、资源访问 等功能。
  • 允许外部程序访问 Spring 管理的 Bean。

示例(加载上下文):

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = context.getBean(UserService.class);

7. MVC 模块(Spring MVC)

核心功能:

  • Spring MVC 是一个 轻量级的 Web 框架,基于 Servlet 提供 请求处理、参数绑定、视图解析
  • 遵循 前端控制器模式(DispatcherServlet),所有请求先经过 DispatcherServlet 处理。

主要组件:

  • DispatcherServlet(前端控制器)
  • Controller(控制器)
  • ViewResolver(视图解析器)
  • ModelAndView(模型视图)

示例(Spring MVC 控制器):

@RestController
@RequestMapping("/api")
public class UserController {@GetMapping("/users/{id}")public User getUser(@PathVariable int id) {return new User(id, "张三");}
}

总结

模块作用
CoreIoC/DI(控制反转),管理 Bean 的生命周期
AOP面向切面编程(事务、日志等)
ORM兼容 Hibernate、MyBatis、JPA 等 ORM 框架
DAOJdbcTemplate,封装 JDBC 操作
Web提供 Web 支持,整合 Struts2、Servlet
Context提供 Bean 访问、事件传播、国际化支持
MVC轻量级 MVC 框架,支持 REST API

Spring 作为 Java 生态中的核心框架,提供了强大的 企业级应用支持,包括 数据库访问、Web 开发、事务管理,也是 Spring Boot 和 Spring Cloud 的基础。


http://www.ppmy.cn/embedded/160492.html

相关文章

初始SpringBoot:详解特性和结构

??JAVA码农探花&#xff1a; ?? 推荐专栏&#xff1a;《SSM笔记》《SpringBoot笔记》 ??学无止境&#xff0c;不骄不躁&#xff0c;知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…

什么是三层交换技术?与二层有什么区别?

什么是三层交换技术&#xff1f;让你的网络飞起来&#xff01; 一. 什么是三层交换技术&#xff1f;二. 工作原理三. 优点四. 应用场景五. 总结 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神的孩子都在歌唱 大家好…

网络编程day2

服务器 客户端

语音交友app系统源码功能及技术研发流程剖析

语音交友App的核心功能包括语音聊天、语音房间、社交互动等&#xff0c;开发流程涵盖需求分析、技术选型、前后端开发、实时通信集成、测试优化、部署上线及运营维护。 一、语音交友App的大概功能 1. 语音聊天 一对一聊天&#xff1a;用户可与好友进行私密语音通话。 群组语音…

【产品小白】什么是微服务

在数字化浪潮汹涌澎湃的当下&#xff0c;软件系统的规模持续扩张&#xff0c;复杂度呈指数级攀升。如何高效地开发软件&#xff0c;确保其后续的维护轻松便捷&#xff0c;同时具备强大的扩展能力&#xff0c;已然成为广大开发者待攻克的核心难题。微服务作为一种应运而生的前沿…

[论文笔记] GRPO DPO

GRPO(General Reinforcement Preference Optimization)和 DPO(Direct Preference Optimization)都是用于训练大语言模型的偏好优化方法,它们通过构造对比样本,使模型学会生成更符合人类偏好的输出。 GRPO vs. DPO 的主要区别 DPO: 直接优化模型,使其偏向人类偏好的样本…

论文翻译学习:《DeepSeek-R1: 通过强化学习激励大型语言模型的推理能力》

摘要 我们介绍了我们的第一代推理模型 DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个通过大规模强化学习&#xff08;RL&#xff09;训练的模型&#xff0c;没有经过监督微调&#xff08;SFT&#xff09;作为初步步骤&#xff0c;展示了卓越的推理能力。通过强化…

[创业之路-286]:《产品开发管理-方法.流程.工具 》-2- 人的管理是任何组织首要解决的问题 - 企业与研发组织组成、构架、组织分工

目录 一、产品开发的部门组成&#xff08;系统关键组成要素&#xff09; 1、产品开发中的市场规划部门与研发内部的市场/产品/技术预研部门的职责区别&#xff1a; 2、研发的分类&#xff1a;技术预研、平台开发、产品开发 相同点 差异点 相互联系 二、研发的组织架构 1…