JavaEE进阶——Spring Boot项目

目录

[一、Spring Boot的概念](#一、Spring Boot的概念)

[1.1 Spring的概念](#1.1 Spring的概念)

[1.2 为什么需要 Spring](#1.2 为什么需要 Spring)

[1.3 Spring Boot的概念](#1.3 Spring Boot的概念)

[1.4 为什么需要 Spring Boot?](#1.4 为什么需要 Spring Boot?)

二、创建一个SpringBoot项目

[2.1 创建配置](#2.1 创建配置)

[2.2 目录介绍和项目代码](#2.2 目录介绍和项目代码)

[2.2.1 目录介绍](#2.2.1 目录介绍)

[2.2.2 pom.xml文件](#2.2.2 pom.xml文件)

[2.3 运行项目](#2.3 运行项目)

[2.4 输出 Hello world](#2.4 输出 Hello world)

三、项目运行分析

[3.1 web服务器](#3.1 web服务器)

[3.2 请求响应分析](#3.2 请求响应分析)

[3.3 访问错误分析](#3.3 访问错误分析)

[3.3.1 404 错误](#3.3.1 404 错误)

[3.3.2 500错误](#3.3.2 500错误)

[3.3.3 无法访问此页面](#3.3.3 无法访问此页面)


一、Spring Boot的概念

在学习SpringBoot之前,我们先来认识一下Spring是什么

1.1 Spring的概念

Spring 是 Java 生态中最主流的企业级应用开发框架,它就像一个 "万能工具箱",帮你解决后端开发中的各种复杂问题(比如对象管理、事务控制、数据库交互等),让代码更简洁、灵活、易维护。

1.2 为什么需要 Spring

想象你开发一个电商系统,需要处理:

  • 订单服务依赖支付服务,支付服务又依赖数据库连接 ------ 这些 "对象之间的依赖关系" 手动管理会很繁琐;
  • 下单时要保证 "扣库存" 和 "创建订单" 要么同时成功,要么同时失败(事务)------ 手动控制事务代码会很冗余;
  • 不同环境(开发、测试、生产)需要切换数据库配置 ------ 硬编码配置会导致频繁改代码。

Spring 就是为解决这些问题而生的,核心思想是**"简化开发"和"解耦"**。

我们把开发 Java 后端比作 "盖房子":

  • 传统方式:你需要自己造砖、砌墙、铺水管、接电线(手动管理对象、事务、配置),效率低且容易出错;
  • 用 Spring:相当于有了标准化的建材(预制板、现成水管电线)和施工框架(自动组装、统一标准),你只需专注于 "房子的设计"(业务逻辑),其他琐事交给框架。

同时Spring不只是一个框架,而是一个"生态体系"

我们可以看到Spring官网上的项目之多,涵盖了开发的方方面面,我们先开始学习Spring Boot

  • Spring Boot:快速搭建 Spring 项目(自动配置,省去繁琐的 XML 配置);

1.3 Spring Boot的概念

Spring Boot 是 Spring 生态下的 "快速开发脚手架",它的核心目标是 "简化 Spring 应用的创建和配置",让开发者能快速搭建一个可运行的 Spring 项目,省去传统 Spring 中繁琐的 XML 配置和依赖管理工作。

1.4 为什么需要 Spring Boot?

在 Spring Boot 出现前,用传统 Spring 开发项目要做很多 "重复且无意义的工作":

  • 手动导入一堆依赖(比如 Spring MVC、数据库驱动等),还得保证版本兼容;
  • 写大量 XML 配置文件(比如配置数据库连接、视图解析器、事务管理器等);
  • 手动整合各种框架(比如 Spring 与 MyBatis、Redis 等),容易出问题;
  • 部署时需要自己打包成 WAR 包,再放到 Tomcat 里运行。

Spring Boot 就像 "开箱即用的工具箱",帮你解决这些问题,让你从 "配置工作" 中解放出来,专注写业务代码。

二、创建一个SpringBoot项目

2.1 创建配置

2.2 目录介绍和项目代码

2.2.1 目录介绍

Spring Boot 项⽬有两个主要的⽬录:

  • src/main/java: Java 源代码
  • src/main/resources: 为静态资源或配置⽂件:
    • /static:静态资源⽂件夹,⽐如前期学的js,css,html等静态⽂件,不需要服务器数据进⾏绑定的⻚⾯
    • /templates:模版资源⽂件夹,主要存放动态模板⽂件,⽐如JSP,Freemarker,Thymeleaf等需要服务器动态渲染数据的⽂件
  • src/test/java:测试代码源代码
  • target:编译后的⽂件路径
  • pom.xml:maven配置⽂件

2.2.2 pom.xml文件

pom.xml的核心作用

pom.xml解决了两个核心问题:

  1. "项目需要哪些依赖" :比如开发 Spring Boot 项目需要引入 spring-boot-starter-web,开发数据库功能需要引入 mysql-connector-java 等,这些都在 pom.xml 中声明。
  2. "项目如何构建":比如项目打包成 JAR 还是 WAR、编译代码的 JDK 版本、输出的文件名等,都在这里配置。

pom.xml⽂件⾥的具体信息,不需要过度关注,我们主要看 <dependencies> 标签⾥⾯的内容

XML 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

dependencies 是依赖列表,里面每个 dependency 对应一个需要引入的库。

引入依赖后,Maven 会自动从远程仓库(如 Maven 中央仓库)下载对应的 JAR 包,并添加到项目的类路径中,无需手动复制 JAR 包。

这里的两个依赖

  • spring-boot-starter-web:包含了web应⽤开发所需要的常⻅依赖
  • spring-boot-starter-test:包含了单元测试所需要的常⻅依赖

2.3 运行项目

我们找到DemoApplication类运行

运行结果如下则为启动成功

这个类就是SpringBoot项目的启动类,这都是因为**@SpringBootApplication**这个注解

如果我们把这个注解删掉,则报错,无法正常启动项目了

2.4 输出 Hello world

我们现在要用Spring Boot实现让我们的程序和浏览器及用户的交互

我们写一个UserController类

java 复制代码
package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController()
@RequestMapping("/hello")
public class UserController {
    @RequestMapping("/world")
    public String sayHi(){
        return "hello world";
    }
}

创建好这个类之后我们可以运行项目,在浏览器输入URL网址http://127.0.0.1:8080/hello/world,此时就可以在浏览器看到hello world

这是URL网址的格式

http://127.0.0.1:8080/hello/world

|--------------|-----------------------------|
| http:// | 协议(Scheme) |
| 127.0.0.1 | 服务器地址(Host):127.0.0.1就是本机地址 |
| :8080 | 端口号(Port) |
| /hello/world | 接口路径(Path) |

三、项目运行分析

3.1 web服务器

浏览器和服务器两端进行数据交互,使用的是HTTP协议

浏览器通过HTTP协议向服务器发送请求,服务器通过HTTP协议向浏览器发送响应

WEB服务器就是对HTTP协议进行封装,程序员不需要对协议进行操作,不用自己写代码去解析HTTP协议,这让web开发更加便捷

我们常见的web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等

而我们的额SpringBoot项目中已经内置了Tomcat服务器,所以我们无需配置,就可以直接运行

而Tomcat的默认端口号就是8080,所以我们上文的端口号就是对Tomcat进程的访问

3.2 请求响应分析

当我们在浏览器输入URL之后,就发起来请求,和服务器建立了连接

  • 浏览器:
    • 输入网址:http://127.0.0.1:8080/hello/world
    • 通过IP地址127.0.0.1定位到需要请求服务的计算机,上文说到127.0.0.1是本机地址
    • 通过端口号8080找到Tomcat进程
    • /hello/world是请求资源的位置
      • /hello:是类资源路径
      • /world:是方法资源路径

所以输入这个网址就是向本地计算机的8080端口程序,获取位置是/hello/world的资源或数据

  • 服务器:
    • 接收到浏览器的发送的信息
    • 在服务器中找到位置是/hello/world的资源
    • 把资源发送给浏览器

3.3 访问错误分析

3.3.1 404 错误

  • 当显示404的时候表示用户访问的资源不存在,大概率是URL路径写的不正确

显示404也有可能是程序里的注解写错了,比如我们把@RestController改成@Controller

java 复制代码
@Controller()
@RequestMapping("/hello")
public class UserController {
    @RequestMapping("/world")
    public String sayHi(){
        return "hello world";
    }
}

3.3.2 500错误

服务器出现内部错误,⼀般是服务器的代码执⾏过程中遇到了⼀些特殊情况(服务器异常崩溃)会产⽣这个状态码

我们在方法中加上一句代码

重启服务器观察浏览器显示

向上图这样状态码显示500的情况,因为是服务器的问题,我们可以到服务器上看到错误日志

我们可以看到已经报错显示一个算数错误,不可以/0

3.3.3 无法访问此页面

这种情况往往是因为服务器没有运行起来,我们启动一下即可

相关推荐
q***71851 小时前
【玩转全栈】----Django基本配置和介绍
数据库·django·sqlite
Han.miracle1 小时前
Java ee初阶——定时器
java·java-ee
高铭杰2 小时前
mysql主备配置(对比postgresql)
数据库·mysql·replication
没有bug.的程序员2 小时前
Spring Cloud Alibaba 生态总览
java·开发语言·spring boot·spring cloud·alibaba
~~李木子~~7 小时前
MySQL 迁移总结报告
数据库·mysql
有梦想的攻城狮9 小时前
通过Lettuce实现PB3格式对象在Redis中的存储与查询
数据库·redis·缓存·pb3
小坏讲微服务9 小时前
Spring Boot整合Redis注解,实战Redis注解使用
spring boot·redis·分布式·后端·spring cloud·微服务·mybatis
桦09 小时前
MySQL【函数】
数据库·mysql
xie_pin_an9 小时前
MyBatis-Plus 实战:MPJLambdaWrapper 多表联查用法全解析
java·spring boot·spring·mybatis