SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

一、Web开发基础:静态/动态资源与B/S、C/S架构解析​

资源类型

类型 描述 示例 主要职责
静态资源 服务器上存储的固定不变的数据 HTML, CSS, JS, 图片, 视频 页面展示
动态资源 服务器根据请求动态生成的内容 Spring框架, Servlet, JSP 逻辑处理

系统架构

架构模式 全称 特点 优缺点
B/S架构 Browser/Server (浏览器/服务器) 客户端只需浏览器 维护方便 ,但体验一般
C/S架构 Client/Server (客户端/服务器) 需专用客户端软件 体验不错 ,但开发维护麻烦

二、Spring 与 Spring Boot 核心介绍

1. Spring 框架

一个强大的、开源的 Java 应用程序开发框架容器,提供一站式企业级应用开发解决方案。

Spring官方网站

核心思想

  • 控制反转 (IoC):将对象的创建和管理权交给容器
  • 依赖注入 (DI):容器自动注入对象所需的依赖

主要优势

  • 松耦合设计:组件间依赖关系减弱,提高灵活性
  • 易于测试:依赖注入使单元测试更简单
  • 模块化结构:可按需选择使用不同功能模块

2. Spring Boot

Spring 框架的扩展,旨在简化 Spring 应用的初始搭建和开发过程

核心特性

  1. 自动配置:根据依赖智能配置应用
  2. 起步依赖:预置依赖组合,解决版本冲突
  3. 内嵌服务器:打包成可执行 JAR,包含内嵌服务器
  4. 开箱即用:几乎零配置快速创建生产级应用

设计理念
"约定大于配置" - 减少决策点,提高开发效率


3. 对比总结

特性 Spring Framework Spring Boot
定位 基础框架,提供全面解决方案 开发加速器,简化Spring使用
配置方式 需要大量显式配置 约定大于配置,自动配置
依赖管理 手动管理依赖和版本 Starter 一站式依赖管理
部署方式 打包成WAR,需外部服务器 可执行JAR,内嵌服务器
主要优势 灵活性高、可定制性强 开发快速、易于上手
适用场景 需要高度定制的复杂应用 快速开发、微服务、原型验证

Spring 是引擎和底盘 (提供核心能力)
Spring Boot 是预装好的整车(基于Spring,提供开箱即用的体验)

三、Spring Boot入门

1.在IDEA里面创建一个Spring Boot项目

注意选项:

语言Java、类型Maven,打包Jar

下一步之后选择web里面的Spring Web(此处我选的Spring Boot是3.5.5版本)

点击创建,下面界面(第一次创建的时候会下载依赖,需要等待一会)

2. 运行第一个SpringBoot程序

以下是pom.xml的信息

起步依赖:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!--  父工程  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--  项目坐标    -->
    <groupId>com.example</groupId>
    <artifactId>springboot-web-1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-web-1</name>
    <description>springboot-web-1</description>

    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>

    <!--  JDK版本  -->
    <properties>
        <java.version>21</java.version>
    </properties>

    <!--  项目依赖  -->
    <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
(1)启动类

在src的main方法里面有个Application的文件,这是一个启动类,当我们运行main方法的时候就可以启动这个项目

(2)请求处理类

@RestController表示当前类是一个请求处理类;

@RequestMapping后面跟请求路径,比如 @RequestMapping("/hello")

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

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

@RestController//表示当前类是一个请求处理类
public class HelloController {

    @RequestMapping("/hello")
    public String hello(String name){
        System.out.println("name : " + name);
        return "Hello" + name + "~";
    }
}
(3)运行项目

运行Application里面的main方法

出现以下界面就说明运行成功

红线划的部分是端口号(默认是8080),此处我用的8081不影响

在浏览器中发送请求localhost:8081/hello?name=Spring%20Boot即可成功运行项目

相关推荐
JAVA面经实录91718 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
陈随易18 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
冰暮流星18 小时前
javascript之事件代理/事件委托
前端
许彰午19 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
陈随易20 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
Bat U20 小时前
JavaEE|多线程初阶(七)
java·开发语言
大鱼七成饱21 小时前
VMware NAT模式下固定内网IP(附详细图文)
后端
里欧跑得慢1 天前
17. Flutter Hero动画实现:让界面过渡更加优雅
前端·css·flutter·web
IT_陈寒1 天前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端
kyriewen1 天前
前端测试:别为了100%覆盖率而写测试,那是自欺欺人
前端·javascript·单元测试