Springboot-第一个示例demo1

admin 2025年4月2日23:00:43评论10 views字数 8945阅读29分49秒阅读模式

介绍

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是为了简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导者。

以下是 Spring Boot 的一些关键特性:

  1. 创建独立的 Spring 应用:Spring Boot 提供了一种快速的方式来创建可以独立运行的 Spring 应用,这些应用可以直接由 Java 命令启动,不需要部署到传统的 Servlet 容器中。

  2. 内嵌的 HTTP 服务器:Spring Boot 包含了许多内嵌的 HTTP 服务器,如 Tomcat、Jetty 等,这使得你可以轻松地将一个 Spring Boot 应用作为一个简单的 Java 应用来运行。

  3. 提供依赖启动器(starter dependencies)来简化构建配置:Spring Boot 提供了一系列所谓的“启动器”,它们是包含相关库的便捷集合的特殊依赖描述符。例如,如果你想要添加对 Web 开发的支持,你只需要包含 spring-boot-starter-web 依赖即可,而无需手动逐个添加所需的库。

  4. 尽可能自动配置 Spring 和第三方库:Spring Boot 自动配置尝试根据类路径中的依赖和你提供的配置来自动设置你的应用。例如,如果 HSQLDB 在类路径上,并且你没有手动配置任何数据库连接,Spring Boot 将会自动配置一个内存中的 HSQLDB 数据库。

  5. 避免编写大量配置代码:Spring Boot 努力减少开发者需要编写的配置代码量。它提供了很多默认配置,这些配置通常足以满足许多应用的需求。

  6. 为通用任务提供支持:Spring Boot 为常见的任务如安全、健康检查、指标收集等提供了开箱即用的支持。

  7. 绝对没有代码生成,也不需要 XML 配置:Spring Boot 的一个重要目标就是不生成代码,也尽量避免进行 XML 配置。

总之,Spring Boot 的目标在于帮助开发者更容易地创建独立的、生产级别的基于 Spring 的应用,同时尽可能少地进行配置工作。

什么是 Maven?

想象一下你正在建造一座房子。你需要砖头、水泥、木材等材料,并且需要按照一定的步骤来完成建造工作:打地基、砌墙、封顶等。现在,如果你每次建房都要自己去寻找这些材料,然后从零开始学习如何建造每一个部分,那会非常耗时耗力,而且容易出错。Maven 就像是一个帮你管理建筑材料(即依赖库)和提供详细的施工指南(即构建流程)的工具,让你专注于设计房子(编写代码)本身。

Maven 的核心概念

  1. POM 文件

    • POM,全称 Project Object Model(项目对象模型),是 Maven 项目的核心配置文件,通常命名为 pom.xml。它就像是一张蓝图,定义了项目的结构、依赖关系、插件配置等。
    • 在这个文件里,你可以指定你的项目需要哪些“建筑材料”(即依赖库),以及你希望如何“施工”(如编译、测试、打包等操作)。
  2. 依赖管理

    • 当你开发软件时,经常需要使用到别人已经写好的库或框架(比如 Spring Boot)。Maven 可以帮助你自动下载并管理这些依赖项。
    • 你只需要在 pom.xml 中声明你需要的依赖,Maven 就会自动从互联网上的中央仓库下载这些依赖,并将它们加入到你的项目中。
  3. 构建生命周期

    • Maven 定义了一套标准的构建生命周期,包括清理(clean)、编译(compile)、测试(test)、打包(package)、安装(install)、部署(deploy)等阶段。
    • 每个阶段都有特定的任务,例如,compile 阶段负责将源代码编译成字节码,test 阶段则运行所有测试用例来验证代码正确性。
    • 使用 Maven,你只需执行简单的命令(如 mvn clean install),就可以自动完成从清理到部署的一系列操作。
  4. 插件支持

    • Maven 插件允许你在构建过程中添加自定义行为。比如,你可以使用插件来生成文档、检查代码质量或者运行特定的测试。
    • 这些插件可以通过 pom.xml 来配置,并且可以与 Maven 的生命周期集成在一起。
  5. 中央仓库

    • Maven 中央仓库是一个存储大量 Java 库的地方。当你在 pom.xml 中声明了一个依赖,Maven 会首先尝试从本地仓库查找该依赖;如果找不到,则会从中央仓库下载。

通过使用 Maven,开发者可以大大减少在项目配置和依赖管理上花费的时间,转而将更多精力放在实际的应用开发上。同时,由于 Maven 提供了一致的构建过程,这也使得团队协作变得更加高效。

第一个springboot-demo1

创建一个空项目

Springboot-第一个示例demo1
image.png
Springboot-第一个示例demo1
image.png

新建模块

Springboot-第一个示例demo1
image.png
Springboot-第一个示例demo1
image.png

配置pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<projectxmlns="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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>demo1</artifactId>
<version>1.0-SNAPSHOT</version>

<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>
<!--spingboot应用打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

pom.xml作用解释

下面是对 Maven POM 文件中每个部分的详细解释,包括为什么需要这样编写:

XML 声明

<?xml version="1.0" encoding="UTF-8"?>
  • 这是 XML 文件的声明。它告诉解析器这个文档使用的是 XML 1.0 标准,并且编码格式为 UTF-8。这对于确保文件能够被正确解析和读取至关重要。

根元素 <project>

<projectxmlns="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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  • <project> 是所有 Maven POM 文件的根元素。
  • xmlns 属性定义了默认命名空间,指向 Maven 的 POM 4.0.0 规范。
  • xmlns:xsi 定义了一个额外的命名空间,用于指定 XML 模式实例。
  • xsi:schemaLocation 提供了命名空间与对应的 XML 模式的具体位置,帮助工具验证 XML 文档的有效性。

<modelVersion>

<modelVersion>4.0.0</modelVersion>
  • 指定当前 POM 文件所遵循的模型版本。对于 Maven 2 及更高版本,该值几乎总是 4.0.0

<groupId><artifactId>, 和 <version>

<groupId>org.example</groupId>
<artifactId>demo1</artifactId>
<version>1.0-SNAPSHOT</version>
  • <groupId>:标识项目的组 ID,通常对应组织或公司域名的反写(如 org.example),确保在中央仓库中独一无二。
  • <artifactId>:标识项目的唯一 ID,通常是项目名称(如 demo1)。
  • <version>:表示项目的版本号。1.0-SNAPSHOT 表示这是一个开发中的版本,并非正式发布版。

<parent>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
</parent>
  • <parent> 元素及其子元素用于指定一个父 POM。这允许你继承来自父 POM 的配置、依赖管理和插件配置等。
  • 在这个例子中,父 POM 是 Spring Boot 的 spring-boot-starter-parent,版本为 3.0.5。使用这样的父 POM 可以简化依赖管理和构建配置,因为你不需要手动指定每个依赖的版本号——Spring Boot 已经为你预设了很多合理的默认值。

<dependencies>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
  • <dependencies> 部分列出了该项目所需的所有外部库(依赖)。每个 <dependency> 标签代表一个具体的依赖项。
  • 在这里,添加了 spring-boot-starter-web 依赖,它是一个“启动器”,包含了构建基于 Spring 的 Web 应用程序所需的全部依赖,如 Spring MVC、Tomcat 等,默认情况下无需再单独指定这些依赖的具体版本。

<build>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
  • <build> 部分定义了项目的构建配置。
  • <plugins> 列出了将要使用的插件。在这里,我们指定了 spring-boot-maven-plugin 插件,它是专门为 Spring Boot 应用程序设计的 Maven 插件,支持打包和运行 Spring Boot 应用程序等功能。
  • 使用此插件可以轻松地将应用程序打包成可执行的 JAR 文件,并且提供了诸如运行应用程序、创建 Docker 映像等额外功能。

通过这种方式组织 POM 文件,你可以确保项目具有正确的依赖关系,以及利用 Spring Boot 提供的一系列便捷特性来加速开发过程。每个部分的设计都是为了满足特定的需求,从基本的项目信息到复杂的构建配置,Maven POM 文件提供了一种标准化的方式来管理 Java 项目。

创建springboot入口

Springboot-第一个示例demo1
image.png
Springboot-第一个示例demo1
image.png

MainApplication内容

package org.huse.boot;  

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

/**  
 启动springboot的唯一入口  
 */

@SpringBootApplication//代表这是一个springboot应用  
publicclassMainApplication{  
publicstaticvoidmain(String[] args){  
        SpringApplication.run(MainApplication.classargs);  
    }  
}

MainApplication内容解释

下面是对 Spring Boot 启动类代码的详细解释,包括每个部分的作用和意义:

包声明

package org.huse.boot;
  • package 关键字用于声明该文件属于哪个包。包是一种将相关的类、接口和其他资源组织在一起的方式,有助于避免命名冲突,并提供了一种管理大型代码库的方法。这里的 org.huse.boot 是一个示例包名,通常基于项目的域名反写。

导入必要的包

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  • SpringApplication:这是 Spring Boot 提供的一个核心类,用于启动应用程序并创建 Spring 应用上下文。
  • @SpringBootApplication:这是一个组合注解,简化了常用的 Spring Boot 配置。它实际上包含了三个主要注解的功能:
    • @Configuration:标记该类为配置类,可以包含 Bean 定义。
    • @EnableAutoConfiguration:启用 Spring Boot 的自动配置机制,根据类路径中的依赖自动配置应用。
    • @ComponentScan:启用组件扫描,自动发现并注册 Spring 组件(如 @Component@Service@Repository@Controller 等)。

类注释与主类定义

/**
 * 启动springboot的唯一入口
 */

@SpringBootApplication// 代表这是一个 springboot 应用
publicclassMainApplication{
publicstaticvoidmain(String[] args){
        SpringApplication.run(MainApplication.classargs);
    }
}
注释
  • 这里的注释说明了该类是整个 Spring Boot 应用程序的启动入口点。
@SpringBootApplication
  • 如前所述,此注解是一个快捷方式,用于简化 Spring Boot 应用程序的配置。它使你的应用具备了自动配置、组件扫描等特性,无需手动进行这些设置。
MainApplication 类
  • 这是一个公共类(public class),名为 MainApplication。在 Spring Boot 应用中,通常会有一个这样的主类来作为启动点。
main 方法
  • public static void main(String[] args):这是 Java 应用程序的标准入口点。当运行这个类时,JVM 会调用 main 方法。
  • SpringApplication.run(MainApplication.class, args);:这一行代码使用 SpringApplication 类的静态方法 run 来启动 Spring Boot 应用程序。它接受两个参数:
    • 第一个参数是当前类的 .class 文件对象,表示这是应用程序的主类。
    • 第二个参数是命令行参数数组,允许从外部传递参数给应用程序。

总结

这段代码展示了如何创建一个基本的 Spring Boot 应用程序。通过使用 @SpringBootApplication 注解,你只需编写很少的代码即可启动一个完整的 Spring Boot 应用。MainApplication 类中的 main 方法则是执行起点,利用 SpringApplication.run() 方法来初始化并运行 Spring Boot 应用程序,处理所有的自动配置、组件扫描等任务。这种设计使得开发人员能够快速开始开发而不需要过多关注底层细节。

创建HelloController

Springboot-第一个示例demo1
image.png
Springboot-第一个示例demo1
image.png

HelloContoller内容

package org.huse.boot.controller;  

import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.ResponseBody;  
import org.springframework.web.bind.annotation.RestController;  

@ResponseBody//意味着你可以通过这个注解将 Java 对象直接转换为 JSON 或 XML 等格式的数据  
@Controller//表示这是一个controller处理器  

//@RestController这是responsebody和controller的合体,指明有他们俩的属性  
publicclassHelloController{  
@GetMapping("/hello")  

public String hello(){  
return"hello,springboot3!";  
    }  
}

HelloContoller内容作用

  • 包声明

    package org.huse.boot.controller;

    定义了该 Java 文件属于 org.huse.boot.controller 包。这有助于组织和管理项目结构。

  • 导入必要的包

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

    导入了用于定义 RESTful Web 服务端点所需的注解。

  • @ResponseBody

    • 作用@ResponseBody 注解可以应用于方法或类级别。当应用于方法时,它告诉 Spring 不要将返回值解析为视图名称,而是直接将其写入 HTTP 响应体中。这意味着你可以通过这个注解将 Java 对象直接转换为 JSON、XML 或其他格式的数据。
    • 自动序列化:如果返回的是一个对象(如 Java Bean),Spring 会自动使用相应的消息转换器(如 Jackson 用于 JSON 转换)将对象转换为合适的格式并写入响应体。
  • @Controller

    • 作用@Controller 注解用于标记一个类作为 Spring MVC 控制器。它的主要目的是标识该类是一个处理器,负责处理传入的 HTTP 请求并返回适当的响应(通常是视图名称)。通常与 @RequestMapping 及其变体(如 @GetMapping@PostMapping 等)一起使用。
    • 视图解析:默认情况下,@Controller 方法返回的字符串被认为是视图名称,Spring 会尝试根据视图解析器配置找到对应的视图模板(如 JSP、Thymeleaf 等)来渲染页面
  • @RestController 注解

    @RestController

    此注解是一个组合注解,它包含了 @Controller 和 @ResponseBody 的功能。这意味着被此注解标记的类中的所有方法都将默认返回数据而非视图,并且可以方便地构建 RESTful Web 服务。

  • HelloController 类

    publicclassHelloController{
    @GetMapping("/hello")
    public String hello(){
    return"hello, springboot3!";
        }
    }
    • HelloController 类负责处理特定的 HTTP 请求。
    • @GetMapping("/hello") 注解指定了该方法将处理 /hello 路径的 GET 请求。
    • hello() 方法返回了一个简单的字符串 "hello, springboot3!",由于类上使用了 @RestController,这个字符串会被直接写入 HTTP 响应体中,而不是被视为视图名称。

运行

运行MainApplication

Springboot-第一个示例demo1
image.png

去浏览器访问

发现可以访问成功Springboot-第一个示例demo1

springboot其他功能

将此应用进行打包

Springboot-第一个示例demo1
image.png

我们可以发现target下生成了一个jar包

Springboot-第一个示例demo1
image.png

要是没有target操作如下Springboot-第一个示例demo1

我们进入jar包命令行

Springboot-第一个示例demo1
image.png
Springboot-第一个示例demo1
image.png

Springboot-第一个示例demo1记得关闭idea项目以免起冲突

输入java -jar jar包名

Springboot-第一个示例demo1
image.png

这时我们去浏览器重新访问,任然可以成功Springboot-第一个示例demo1

我们在另一随便路径下创一文件夹且随便命名,我命名为app,把jar包复制在文件夹里,和上面方法相同,进入此路径cmd,运行,此时我们可以看见这是8080端口

Springboot-第一个示例demo1
image.png

我们在刚刚app文件夹下再创application.properties配置文件Springboot-第一个示例demo1application.properties内容,作用是更改端口为8888

server.port=8888

按照上面方法运行,发现端口改为了8888Springboot-第一个示例demo1

这时我们访问8080端口发现访问不成功了

Springboot-第一个示例demo1
image.png

我们将端口号改为8888,发现访问成功Springboot-第一个示例demo1

原文始发于微信公众号(安全泡泡鱼):Springboot-第一个示例demo1

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月2日23:00:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Springboot-第一个示例demo1https://cn-sec.com/archives/3892664.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息