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

server/2025/3/25 23:37:46/

 <前文回顾>

点击此处查看 合集 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/server/177190.html

相关文章

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪&#xff08;Surface-Tracking&#xff09;是指机器人通过实时感知工件曲面的三维形貌&#xff0c;动态调整运动轨迹和位姿&#xff0c;以精确跟随曲面进行加工&#xff08;如打磨、抛光、喷涂等&#xff09;的技术。 力 - 位姿协同控制 力控模式&#xff…

个人陈述本人于2011年8月被XXX大学经济学专业录取

本人于2011年8月被XXX大学经济学专业录取。在三年的学习中&#xff0c;我渐渐领略到了经济学的独特魅力&#xff0c;对经济学产生了浓厚的兴趣。秉着专一学习态度&#xff0c;不断向着目标努力&#xff0c;我取得了优秀的成绩&#xff0c;前五学期总成绩91.08分&#xff0c;名列…

【Leetcode 每日一题】2680. 最大或值

问题背景 给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k。每一次操作中&#xff0c;你可以选择一个数并将它乘 2 2 2。 你最多可以进行 k k k 次操作&#xff0c;请你返回 n u m s [ 0 ] ∣ n u m s [ 1 ] ∣ . . . ∣ n u m …

idea 编译打包nacos2.0.3源码,生成可执行jar 包常见问题

目录 问题1 问题2 问题3 问题4 简单记录一下nacos2.0.3&#xff0c;编译打包的步骤&#xff0c;首先下载源码&#xff0c;免积分下载&#xff1a; nacos源码&#xff1a; https://download.csdn.net/download/fyihdg/90461118 protoc 安装包 https://download.csdn.net…

使用PyMyCobot库控制ultraArm机械臂识别物体并夹放至指定的储物盒中,完整代码

代码分为物体识别、坐标转换和机械臂控制三部分&#xff1a; import cv2 import numpy as np from pymycobot import UltraArm import time # 初始化摄像头 cap cv2.VideoCapture(0) cap.set(3, 640) # 宽度 cap.set(4, 480) # 高度 # 加载物体检测模型&#xff08;M…

Unity Render Streaming项目之Multiplay经验

去年8月部署了Unity Render Streaming项目后&#xff0c;很久没有再次运行&#xff0c;近期由于项目需要&#xff0c;专门在本地实验Unity Render Streaming项目之Multiplay。本文将实践经验细节留下记录&#xff0c;供后期查阅。 1Unity editor中 选择project中的multiplay直接…

手动集成sqlite的方法

注意到sqlite有backup方法&#xff08;https://www.sqlite.org/backup.html&#xff09;。 也注意到android中sysroot下&#xff0c;没有sqlite3的库&#xff0c;也没有相关头文件。 如果要使用 sqlite 的backup&#xff0c;那么就需要手动集成sqlite代码到项目中。可以如下操…

脚本一键式启动Nginx、Mysql、Redis

此脚本包含拉取镜像、数据卷挂载、容器启动三大部分&#xff0c;可一键式安装三大环境 新建一个depoy.sh文件在服务器上&#xff0c;然后复制以下内容。 给脚本文件添加执行权限 chmod x depoy.sh # 文件的当前目录下 如果需要修改数据库MYSQL密码和Reids密码 MYSQL_ROO…