微信登录

框架简介 - 起步依赖 - 简化依赖管理

Java - Web - Spring 《框架简介 - 起步依赖 - 简化依赖管理》

一、Spring 框架简介

Spring 是一个开源的 Java 企业级应用开发框架,由 Rod Johnson 在 2003 年创建。它的出现旨在简化企业级应用开发,解决了传统 Java EE 开发中复杂度高、耦合度大等问题。Spring 框架提供了丰富的功能模块,涵盖了从基础的依赖注入(Dependency Injection,简称 DI)、面向切面编程(Aspect-Oriented Programming,简称 AOP)到 Web 开发、数据访问等各个方面。

主要特性

  1. 依赖注入(DI):通过依赖注入,对象之间的依赖关系由容器来管理,而不是在对象内部直接创建依赖对象。这样可以降低代码的耦合度,提高代码的可测试性和可维护性。
  2. 面向切面编程(AOP):允许开发者在不修改原有业务逻辑的基础上,对程序进行增强,例如日志记录、事务管理等。
  3. IoC 容器:Spring 的核心是 IoC(Inversion of Control,控制反转)容器,它负责创建和管理对象的生命周期。
  4. 事务管理:提供了统一的事务管理机制,支持声明式事务和编程式事务。
  5. Web 开发支持:Spring MVC 是 Spring 提供的 Web 开发框架,它基于 MVC(Model - View - Controller)架构,简化了 Web 应用的开发过程。

二、起步依赖概述

在使用 Spring 框架进行开发时,我们需要引入大量的依赖库。为了简化依赖管理,Spring Boot 提供了起步依赖(Starter Dependencies)的概念。起步依赖是一组预定义的依赖集合,它们将相关的依赖打包在一起,我们只需要引入一个起步依赖,就可以自动引入该功能所需的所有依赖。

起步依赖的优势

  1. 简化配置:无需手动添加大量的依赖库,减少了配置错误的可能性。
  2. 版本管理:Spring Boot 会自动管理依赖库的版本,避免了版本冲突的问题。
  3. 提高开发效率:开发人员可以更专注于业务逻辑的实现,而不是依赖管理。

三、简化依赖管理示例

1. 创建 Spring Boot 项目

我们可以使用 Spring Initializr(https://start.spring.io/)来快速创建一个 Spring Boot 项目。选择以下配置:

  • Project:Maven Project
  • Language:Java
  • Spring Boot:2.7.5
  • Group:com.example
  • Artifact:spring-demo
  • Dependencies:Spring Web

点击“Generate”按钮下载项目压缩包,解压后导入到 IDE 中。

2. 项目结构分析

项目的主要结构如下:

  1. spring-demo
  2. ├── src
  3. ├── main
  4. ├── java
  5. └── com
  6. └── example
  7. └── springdemo
  8. ├── SpringDemoApplication.java
  9. └── controller
  10. └── HelloController.java
  11. └── resources
  12. ├── application.properties
  13. └── static
  14. └── templates
  15. ├── pom.xml

3. 查看 pom.xml 文件

pom.xml 是 Maven 项目的配置文件,我们可以看到引入的起步依赖:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.7.5</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>spring-demo</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>spring-demo</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. </dependencies>
  30. <build>
  31. <plugins>
  32. <plugin>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-maven-plugin</artifactId>
  35. </plugin>
  36. </plugins>
  37. </build>
  38. </project>

在上面的 pom.xml 文件中,我们引入了 spring-boot-starter-web 起步依赖,它包含了 Spring MVC、Tomcat 等 Web 开发所需的依赖库。

4. 编写控制器代码

com.example.springdemo.controller 包下创建 HelloController.java 文件:

  1. package com.example.springdemo.controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class HelloController {
  6. @GetMapping("/hello")
  7. public String hello() {
  8. return "Hello, Spring Boot!";
  9. }
  10. }

5. 运行项目

运行 SpringDemoApplication.java 类的 main 方法,启动 Spring Boot 应用。打开浏览器,访问 http://localhost:8080/hello,可以看到页面显示 “Hello, Spring Boot!”。

四、常见起步依赖总结

起步依赖名称 功能描述
spring-boot-starter-web 用于开发 Web 应用,包含 Spring MVC 和嵌入式 Servlet 容器(如 Tomcat)
spring-boot-starter-data-jpa 用于使用 JPA(Java Persistence API)进行数据访问,包含 Hibernate 等持久化框架
spring-boot-starter-security 用于实现 Spring Security 安全功能,提供身份验证和授权机制
spring-boot-starter-thymeleaf 用于使用 Thymeleaf 模板引擎进行视图渲染
spring-boot-starter-cache 用于集成缓存功能,支持多种缓存实现(如 Redis、Ehcache 等)

通过使用 Spring Boot 的起步依赖,我们可以轻松地管理项目的依赖,提高开发效率,让我们更专注于业务逻辑的实现。无论是小型项目还是大型企业级应用,Spring 框架和起步依赖都能为我们提供强大的支持。