Spring Boot-01-通过一个项目快速入门

官方参考文档:Spring Boot Reference Documentation

0. 概述

Spring的缺点:

1. 配置繁琐:虽然Spring的组件代码是轻量级,但它的配置却是重量级的。
2. 依赖繁琐:项目的依赖管理也是一件耗时耗力的事情。分析要导入哪些库的坐标、与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
这些问题Spring Boot可以解决,Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式,**底层依然是Spring。**基于约定优于配置的思想,不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中。

Spring Boot功能:

1. 自动配置:运行时过程,按需自动配置Spring以及第三方库。约定大于配置:每个场景都有很多默认配置。自定义:配置文件中修改几项即可。
2. 起步依赖:依赖传递

起步依赖本质上是一个Maven项目对象模型(ProjectObject Model,POM),定义了对其他库的传递依赖这些东西加在一起即支持某项功能。
简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

3. 直接嵌入Tomcat、Jetty or Undertow(无需部署 war 包)【Servlet容器】,将应用打成jar包,有java运行环境即可。
4. 提供可选的starter场景启动器,简化应用整合。如果要使用web、json、邮件、oss(对象存储)、异步、定时任务、缓存...,要导包一堆,控制好版本。Springboot为每一种场景准备了一个依赖; web-starter。mybatis-starter,只需导入这一个依赖即可。
**5. 提供生产级特性:**如监控指标、健康检查、外部化配置等
6. 无代码生成、无xml

一、Spring Boot 快速入门项目

搭建SpringBoot工程,定义HelloController.hello()方法,返回"Hello SpringBoot!",定义引导类,启动Springboot应用。

1. 创建Maven项目、目录结构

2. 导入SpringBoot起步依赖:pom.xml

XML 复制代码
<!--    所有springboot项目都必须继承自 spring-boot-starter-parent -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.5</version>
    </parent>

    <dependencies>
        <!--        web开发的场景启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!--    SpringBoot应用打包插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3. 定义Controller

只扫描主程序所在这个包及其子包,

java 复制代码
package com.circle.boot.controller;

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

/**
 *
 * @author circle
 * @date 2024/4/6
 * @Description 控制类
 */

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "Hello,Spring Boot 3!";
    }
}

4. 编写引导类:springboot应用的入口

java 复制代码
package com.circle.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 *
 * @author circle
 * @date 2024/4/6
 * @Description
 */

@SpringBootApplication //这是一个SpringBoot应用
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);  // Springboot启动代码
    }
}

5. application.properties配置文件

在resource目录下,由于我的8080端口被占用,在此处设置成其他端口。

XML 复制代码
server.port=8004

6. 启动测试

在浏览器输入:localhost:8004/hello

7. 打包

点击Maven,Lifecycle下的clean和package(按住ctrl同时选),将本项目打成jar包。

jar包位于target目录下:

在文件夹中找到target目录,进入cmd,执行命令:java -jar helloworld_01-1.0-SNAPSHOT.jar

XML 复制代码
E:\IntelliJ IDEA 2022.1.4\project\Springboot3_demo\helloworld_01\target>java -jar helloworld_01-1.0-SNAPSHOT.jar

即可运行我们的项目,必须在IDEA中先终止项目,否则显示端口被占用。

由此项目,我们可以体会到Springboot的特性:

1. 简化整合:场景启动器

只要导入相关的场景,就能拥有相关的功能。不用配一堆依赖!

默认支持的所有场景:Developing with Spring Boot

  • 官方提供的场景:命名为:spring-boot-starter-*
  • 第三方提供场景:命名为:*-spring-boot-starter
2. 简化开发:无需编写任何配置,直接开发业务
3. 简化配置:application.properties
  • 集中式管理配置。只需要修改这个文件就行 。
  • 配置基本都有默认值
  • 能写的所有配置都在: Common Application Properties
4. 简化部署:打包为可执行的jar包,只要有java环境即可。
5. 简化运维

修改配置(外部放一个application.properties文件)、监控、健康检查。


上述各步骤,还可以简化,不用手动创建各文件------>Spring Initializr 创建向导,一键创建好整个项目结构

还是new Module,但此时选择Spring Initializr:

需要什么,此处就选什么,create:

目录结构如下,很多文件和内容都已经准备好:

Initializr02Application:主程序

resources/static:静态资源,图片、JS、CSS等

resource/template:页面模板

application.properties:配置文件

创建同样的控制类,相应hi

java 复制代码
package com.circle.boot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 *
 * @author circle
 * @date 2024/4/6
 * @Description 
 */

@RestController
public class HelloController {
    @GetMapping("/hi")
    public String hello(){
        return "Hi,Spring Boot 3!";
    }
}

启动测试:

相关推荐
2301_8135995541 分钟前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
NCIN EXPE5 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台5 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
lUie INGA5 小时前
在2023idea中如何创建SpringBoot
java·spring boot·后端
极客on之路5 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家5 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE5 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow126 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
handler016 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
电子云与长程纠缠6 小时前
UE5 两种方式解决Decal Actor贴花拉伸问题
学习·ue5·游戏引擎