SpringBoot起步依赖和自动配置

繁琐的Spring

Spring是目前世界上最流行的Java框架,直接基于Spring框架进行Web项目的开发,会比较繁琐。 繁琐主要体现在两个地方:

  1. pom.xml中依赖配置比较繁琐,需要自己去找到对应的依赖以及进行版本管理,否则就会出现版本冲突问题。
  2. 项目开发时,需要在Spring的配置文件中做大量的配置,这就造成入门难度较大,学习成本较高

简单的Spring Boot

因为Spring存在这些问题,官方在Spring4.0版本后,推出了一个全新的框架:SpringBoot 通过 SpringBoot来简化Spring框架的开发(是简化不是替代)。我们直接基于SpringBoot来构建Java项目,会让我们的项目开发更加简单,更加快捷。让我们能够集中精力关注业务功能的开发

SpringBoot框架之所以使用起来更简单更快捷,是因为SpringBoot框架底层提供了两个非常重要的功能:

  1. 起步依赖
  2. 自动配置

起步依赖

如果使用Spring框架进行web程序的开发,此时我们就需要手动引入web程 序开发所需要的一些依赖。包括

  • spring-webmvc依赖:这是Spring框架进行web程序开发所需要的依赖
  • servlet-api依赖:Servlet基础依赖
  • jackson-databind依赖:JSON处理工具包
  • 如果要使用AOP,还需要引入aop依赖、aspect依赖

需要自己保证版本匹配,否则就可能会出现版本冲突问题 而使用SpringBoot后, 只需要web开发的起步依赖:springboot-starter-web

其他的依赖如json、web、webmvc、tomcat自动的通过Maven依赖传递引入到项目, 并且能统一进行版本管理,再也不会版本冲突了, 非常方便快捷

起步依赖清单

SpringBoot完整的起步依赖清单如下图所示,包含名称、作用的依赖库

自动配置

当Spring容器启动后,配置类、bean对象自动存入IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。

打开idea,看下自动配置的效果

运行SpringBoot项目

有两个CommonConfig,在第一个CommonConfig类中定义了一个bean对象,bean对象的名字叫reader。

第二个CommonConfig的bean名字叫commonConfig

怎么生成这样一个IOC bean对象呢?

在CommonConfig配置类上添加了一个注解@Configuration,而@Configuration底层就是@Component

所以配置类变成SpringIOC容器当中的一个bean对象

在IOC容器中除了自定义bean,还有很多配置类,这些配置类都会在SpringBoot启动的时候加载进来, 并生成很多的bean对象。

比如:配置类GsonAutoConfiguration里面有一个bean叫gson, 类型为com.google.gson.Gson, 是谷歌提供的用来处理JSON格式数据的工具类。

如何使用这些配置类中生成的bean对象呢

使用@Autowired就自动注入了:

typescript 复制代码
import com.google.gson.Gson;
import com.itheima.pojo.Result;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class AutoConfigurationTests {
    @Autowired
    private Gson gson;
    
    @Test
    public void testJson(){
        String json = gson.toJson(Result.success());
        System.out.println(json);
    }
}

添加断点,使用debug模式运行测试类程序:

可以看到, Gson对象自动注入到我们自定义的json bean变量中

SpringBoot项目在启动时将依赖jar包当中所定义的配置类以及bean加载到SpringIOC容器中的, 并通过自动配置完成了bean对象的创建

相关推荐
·薯条大王3 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
ZJH__GO6 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆6 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光6 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林6 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
marvelyu7 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
AI人工智能+电脑小能手8 小时前
大白话说Java设计模式-04-工厂方法模式(业务实战篇)
java·设计模式·工厂方法模式·架构设计·代码解耦
BUG指挥官8 小时前
Sa-Token和Spring Security对比
java·后端·spring
小当家.1059 小时前
深入理解 ReAct Agent:从原理到 Java 实战
java·react.js·agent·react·架构设计·agent设计
geminigoth9 小时前
Spring AI Alibaba 入门开发一(备份)
java·人工智能·spring