【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的起步依赖:快速构建 JavaWeb 项目

devtools/2025/3/19 13:44:42/

 <前文回顾>

点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、起步依赖:Spring Boot 的“懒人神器”

Spring Boot 的起步依赖[1],说白了就是“懒人神器”。它把一堆常用的依赖打包成一个“全家桶”,开发者只需要引入一个起步依赖,就能搞定一堆事儿。起步依赖的核心思想是“开箱即用”,开发者不用再为依赖冲突、版本兼容啥的“挠头”。

1. spring-boot-starter-web:Web 开发的“全家桶”

spring-boot-starter-web 是 Web 开发的“全家桶”,里头装着 Spring MVC、Tomcat、Jackson 啥的。有了它,开发者就能“躺平”开发 Web 应用了。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

</dependency>

2. spring-boot-starter-data-jpa:数据访问的“利器”

spring-boot-starter-data-jpa 是数据访问的“利器”,里头装着 Spring Data JPA、Hibernate 啥的。有了它,开发者就能“躺平”操作数据库了。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

3. spring-boot-starter-test:测试的“工具箱”

spring-boot-starter-test 是测试的“工具箱”,里头装着 JUnit、Mockito、Spring Test 啥的。有了它,开发者就能“躺平”写测试了。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-test</artifactId>

    <scope>test</scope>

</dependency>

二、起步依赖的“历史”:从“手忙脚乱”到“躺平开发”

起步依赖的出现,让 JavaWeb 开发从“手忙脚乱”变成了“躺平开发”。起步依赖的历史,说白了就是 JavaWeb 开发的“进化史”。

1. 2014 年:Spring Boot 1.0 发布

2014 年,Spring Boot 1.0 发布,起步依赖的概念正式登场。起步依赖的出现,让 JavaWeb 开发变得更加简单。

2. 2016 年:Spring Boot 1.4 发布

2016 年,Spring Boot 1.4 发布,起步依赖的种类更加丰富,涵盖了 Web、数据访问、安全、消息队列等方方面面。

3. 2020 年:Spring Boot 2.3 发布

2020 年,Spring Boot 2.3 发布,起步依赖的性能更加优化,支持了更多的第三方库。

三、起步依赖的“骚操作”

1. 自定义起步依赖:从“拿来主义”到“自力更生”

Spring Boot 支持自定义起步依赖,能把自己的配置打包成起步依赖,方便其他项目使用。

XML Code

<dependency>

    <groupId>com.example</groupId>

    <artifactId>my-starter</artifactId>

    <version>1.0.0</version>

</dependency>

2. 排除依赖:从“全家桶”到“按需取用”

Spring Boot 的起步依赖虽然“省心”,但有时候也得“挑挑拣拣”。可以用 exclusions 排除不需要的依赖。

XML Code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    <exclusions>

        <exclusion>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-tomcat</artifactId>

        </exclusion>

    </exclusions>

</dependency>

3. 依赖管理:从“手动”到“自动”

Spring Boot 的起步依赖通过 spring-boot-dependencies 管理依赖版本,开发者不用再为版本冲突“挠头”。

XML Code

<dependencyManagement>

    <dependencies>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-dependencies</artifactId>

            <version>2.5.0</version>

            <type>pom</type>

            <scope>import</scope>

        </dependency>

    </dependencies>

</dependencyManagement>

四、起步依赖的“实战演练”

1. 快速构建 Web 项目

用 spring-boot-starter-web 快速构建一个 Web 项目,只需要几行代码。

Java Code

@SpringBootApplication

@RestController

public class MyApp {

    public static void main(String[] args) {

        SpringApplication.run(MyApp.class, args);

    }

    @GetMapping("/hello")

    public String hello() {

        return "Hello, World!";

    }

}

2. 快速操作数据库

用 spring-boot-starter-data-jpa 快速操作数据库,只需要几行代码。

Java Code

@Entity

public class User {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;

    private String name;

    private int age;

    

    // getters and setters

}

public interface UserRepository extends JpaRepository<User, Long> {

}

@Service

public class UserService {

    @Autowired

    private UserRepository userRepository;

    

    public List<User> getAllUsers() {

        return userRepository.findAll();

    }

}

3. 快速写测试

用 spring-boot-starter-test 快速写测试,只需要几行代码。

Java Code

@SpringBootTest

public class MyAppTest {

    @Autowired

    private UserService userService;

    

    @Test

    public void testGetAllUsers() {

        List<User> users = userService.getAllUsers();

        assertNotNull(users);

    }

}

五、起步依赖的“调校”

1. 修改默认配置:从“躺平”到“调校”

Spring Boot 的起步依赖虽然“省心”,但有时候也得“调校”一下。比如,修改 Tomcat 的端口号。

2. 自定义 Bean:从“默认”到“定制”

Spring Boot 的起步依赖虽然“开箱即用”,但有时候也得“定制”一下。比如,自定义一个 Bean。

Java Code

@Bean

public MyService myService() {

    return new MyService();

}

3. 条件化配置:从“一刀切”到“按需配置”

Spring Boot 支持条件化配置,能用 @ConditionalOnProperty@ConditionalOnClass 等注解,按需配置 Bean。

Java Code

@Configuration

@ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true")

public class MyFeatureConfiguration {

    @Bean

    public MyFeature myFeature() {

        return new MyFeature();

    }

}

专有名词解释

  1. 起步依赖:Spring Boot 的核心特性之一,通过打包常用依赖简化项目配置。
  2. Spring Data JPA:Spring 提供的数据访问框架,简化了 JPA 的使用。
  3. JUnit:Java 的单元测试框架,Spring Boot 默认使用它进行测试。


http://www.ppmy.cn/devtools/168355.html

相关文章

使用静态库动态库也要头文件

是的&#xff0c;即使你使用了 QCustomPlot 的导入库&#xff08;例如 .lib 文件&#xff09;和动态链接库&#xff08;.dll 文件&#xff09;&#xff0c;仍然需要包含 qcustomplot.h 头文件。原因如下&#xff1a; 1. 头文件的作用 qcustomplot.h 是 QCustomPlot 的主要头文…

结合基于标签置信度的特征选择方法用于部分多标签学习-简介版

假设 部分多标签学习&#xff08;PML&#xff09;假设&#xff1a;假设样本的标签集合中存在伪正标签&#xff0c;即某些标签可能是错误的。目标是从候选标签集中识别出真实标签。特征与标签的关系假设&#xff1a;假设不同的标签对应的特征子空间可能是不同的&#xff0c;而不…

C++基础 [五] - String的模拟实现

目录 前言 string类的模拟实现 成员函数的实现 构造函数 拷贝构造函数 赋值运算符重载 析构函数 元素访问的实现 operator[ ] Iterator - 迭代器 容量大小的实现 size capacity reserve ​编辑resize 内容修改的实现 push_back append operator(char ch) …

C++动态库中的静态调用和动态调用,延迟加载

动态库&#xff08;Dynamic Library&#xff09;是包含可以由多个程序同时使用的代码和数据的文件。在Windows上&#xff0c;它们通常被称为DLL&#xff08;动态链接库&#xff09;&#xff0c;而在Linux和macOS上&#xff0c;它们通常被称为共享对象&#xff08;.so文件&#…

34个适合机械工程及自动化专业【论文选题】

论文选题具有极其重要的意义&#xff0c;它直接关系到论文的质量、价值以及研究的可行性和顺利程度。选题明确了研究的具体领域和核心问题&#xff0c;就像给研究旅程设定了方向和目的地。例如&#xff0c;选择 “人工智能在医疗影像诊断中的应用” 这一选题&#xff0c;就确定…

Cursor IDE 入门指南

什么是 Cursor? Cursor 是一款集成了 AI 功能的现代代码编辑器&#xff0c;基于 VSCode 开发&#xff0c;专为提高开发效率而设计。它内置强大的 AI 助手功能&#xff0c;能够理解代码、生成代码、解决问题&#xff0c;帮助开发者更快、更智能地完成编程任务。 基础功能 1.…

SpringData Elasticsearch:索引管理与全文检索

文章目录 引言一、Spring Data Elasticsearch基础配置二、实体映射与索引定义三、索引管理操作四、文档管理与CRUD操作五、高级全文检索实现六、聚合与统计分析七、最佳实践与性能优化总结 引言 Elasticsearch作为一款强大的搜索引擎&#xff0c;被广泛应用于全文检索、日志分…

函数凹凸性

1 凸函数&#xff1a; f ′ ′ ( x ) > 0 f^{\prime \prime}(x)>0 f′′(x)>0&#xff0c;函数向上开口 2 凹函数 f ′ ′ ( x ) < 0 f^{\prime \prime}(x)<0 f′′(x)<0&#xff0c; 函数向下开口