spring boot 基础案例【1】在页面上打印hellow world

1.在页面上打印hellow world

要在 Spring Boot 中打印 "Hello World" 并理解其代码,你可以创建一个简单的 Spring Boot 应用。这里,我将展示一个基本的示例并逐行解释代码的功能。

1.1 创建 Spring Boot 应用

首先,确保你已经安装了 Java 和 Maven。然后,你可以使用 Spring Initializr(一个在线工具)来生成项目基础结构,或者直接创建以下文件和代码。

1.2 创建 Maven 项目文件 pom.xml

这个文件定义了项目的依赖关系和配置。在这个例子中,我们只需要 Spring Boot 的基础启动器依赖。

xml 复制代码
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>hello-world</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
</project>

这段代码是 Maven 项目的核心配置文件 pom.xml 的部分内容,它定义了项目的基本元数据、继承关系以及依赖项。下面详细解释每个组成部分的功能和意义:

1.2.1 <project> 标签
xml 复制代码
<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 
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
  • xmlns : 定义了项目使用的 XML 命名空间。对于 Maven POM 文件,通常是 "http://maven.apache.org/POM/4.0.0"
  • xmlns:xsi : 指定了 XML Schema 实例的命名空间,用于引用 XML Schema 文件,这里是 "http://www.w3.org/2001/XMLSchema-instance"
  • xsi:schemaLocation: 指定了 XML Schema 文件的位置,这里通过提供 Maven POM 的版本和对应的 Schema 定义位置来确保 POM 文件遵循正确的格式。
1.2.2 <modelVersion> 标签
xml 复制代码
<modelVersion>4.0.0</modelVersion>
  • modelVersion : 这指明了 POM 模型的版本。对于所有现代的 Maven 项目,这个值应该是 4.0.0,这是 Maven POM 模型的当前版本。
1.2.3 <groupId>, <artifactId>, 和 <version> 标签
xml 复制代码
<groupId>com.example</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
  • groupId : 定义了项目的组织或者组的唯一基础,通常用域名的反转来表示。在这里,com.example 可能代表了一个示例组织。
  • artifactId : 项目的名称,这里是 hello-world。这通常是项目的具体名称或者标识。
  • version : 指定了项目的版本。1.0-SNAPSHOT 表明这是一个开发中的版本。在 Maven 中,SNAPSHOT 表示一个项目处于开发阶段,其内容随时可能改变。
1.2.4 <parent> 标签

我们之前已经详细讨论过这个部分,它指定了当前项目继承的父项目,这在 Spring Boot 应用中非常常见,用以简化配置和依赖管理。

1.2.5 <dependencies> 标签

同样,我们已经探讨了这部分,它定义了项目所依赖的其他库,确保所需的库能被 Maven 解析并加入到项目的类路径中。

通过这些配置,Maven 能够管理项目的构建、报告和文档生成流程,同时依赖于一系列规范和标准,使得开发者可以更加专注于代码本身,而不是配置细节。

1.3 创建主 Java 类

src/main/java/com/example 目录下创建一个名为 HelloWorldApplication.java 的文件。这是主类,用于启动 Spring Boot 应用。

java 复制代码
package com.example;

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

@SpringBootApplication  // 标注这是一个 Spring Boot 应用
public class HelloWorldApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);  // 启动应用
    }
}

这段代码是一个典型的 Spring Boot 应用程序的入口点。让我们逐行解析这段代码,以更好地理解其功能和工作原理:

java 复制代码
package com.example;
  • 包声明 (package com.example;): 这行代码声明了一个包名 com.example,它是 Java 中用于组织类和接口的一种命名空间机制。包提供了一个全局唯一的命名空间,帮助你组织代码模块和库。
java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  • 导入语句 (import): 这些行导入了必要的 Spring Boot 类。SpringApplication 类是 Spring Boot 框架的一部分,用于启动 Spring 应用。@SpringBootApplication 是一个便捷的注解,捆绑了多个功能性注解。
java 复制代码
@SpringBootApplication  // 标注这是一个 Spring Boot 应用
  • @SpringBootApplication 注解 : 这是一个复合注解,它封装了以下三个重要的注解:
    • @Configuration: 表明该类可以使用 Spring IoC 容器作为 bean 定义的来源。
    • @EnableAutoConfiguration: 告诉 Spring Boot 基于添加的 jar 依赖自动配置应用。
    • @ComponentScan: 指示 Spring 扫描当前包和子包中的其他组件、配置和服务。
java 复制代码
public class HelloWorldApplication {
  • 类声明 (public class HelloWorldApplication): 这里定义了一个公开的类 HelloWorldApplication,这是应用的主类和入口点。
java 复制代码
public static void main(String[] args) {
  • main 方法 : public static void main(String[] args) 是 Java 程序的标准入口点。这里,它用来启动 Spring Boot 应用。String[] args 是从命令行传入应用的参数数组。
java 复制代码
    SpringApplication.run(HelloWorldApplication.class, args);  // 启动应用
  • 启动 Spring 应用 : SpringApplication.run(HelloWorldApplication.class, args); 这行代码实际上是启动整个 Spring Boot 应用。它向 SpringApplication.run 方法传递了两个参数:应用的主类和命令行参数。这个方法负责创建 Spring 应用上下文、注册所有自动检测的组件(controllers, services, configurations, etc.),并启动内嵌的服务器(默认是 Tomcat)。

总的来说,这段代码展示了 Spring Boot 程序的标准结构:通过一个主类和一个主方法来启动应用,利用 @SpringBootApplication 注解简化配置和启动过程。这种结构使得开发者可以快速开始一个项目,同时保持足够的灵活性来添加更多的组件和配置。

1.4 添加一个控制器来打印 "Hello World"

创建一个名为 HelloController.java 的文件,该文件包含一个方法来响应 Web 请求。

java 复制代码
package com.example;

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

@RestController  // 标记这是一个控制器,并且返回值是直接写入响应体中
public class HelloController {

    @GetMapping("/")  // 指定对根URL的GET请求进行响应
    public String hello() {
        return "Hello World";  // 返回 Hello World 文本
    }
}

这段代码是一个简单的 Spring Boot 控制器实现,它定义了一个可以响应 HTTP GET 请求的端点。以下是代码的逐行详细解析:

包和导入声明

java 复制代码
package com.example;
  • 包声明 :这行代码定义了 Java 类的包名为 com.example。在 Java 中,包用于逻辑地组织类,并可以控制类的访问权限。
java 复制代码
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
  • 导入语句 :这些语句导入了 Spring 框架中用于创建 Web 应用的特定类和注解。GetMapping 是一个用来处理 HTTP GET 请求的注解,而 RestController 是一个标记类作为控制器组件的注解,专门用于处理 HTTP 请求。

控制器和路由

java 复制代码
@RestController  // 标记这是一个控制器,并且返回值是直接写入响应体中
public class HelloController {
  • @RestController 注解 :这个注解是 @Controller@ResponseBody 注解的组合体,用于简化控制器的创建。这表明任何由这个类中的方法返回的结果都将直接作为 HTTP 响应的正文返回,不通过视图解析器。
java 复制代码
    @GetMapping("/")  // 指定对根URL的GET请求进行响应
    public String hello() {
        return "Hello World";  // 返回 Hello World 文本
    }
}
  • @GetMapping 注解 :这个注解用于将 HTTP GET 请求映射到特定的处理方法上。在这里,"/" 表示这个方法将响应对根 URL 的 GET 请求。这是 RESTful Web 服务中定义资源获取操作的典型方式。

  • hello 方法 :这是一个简单的方法,当上述 URL 收到 GET 请求时被调用。它返回一个字符串 "Hello World",由于类使用了 @RestController 注解,这个字符串将直接作为 HTTP 响应的正文返回给客户端。

1.5 运行你的应用

在你的项目目录下运行这个命令:

bash 复制代码
mvn spring-boot:run

这条命令会启动你的 Spring Boot 应用。默认情况下,它会在端口 8080 上运行。你可以在浏览器中访问 http://localhost:8080/ 来查看 "Hello World" 消息。

这个简单的示例介绍了如何使用 Spring Boot 创建一个基本的 Web 应用,涵盖了从项目配置到具体的代码执行。这样的应用架构让你可以轻松地扩展更多功能和复杂的业务逻辑。

在一个典型的 Spring Boot 项目中,HelloApplication.javaHelloController.java 是协同工作的两个组件,各自承担不同的职责。下面是这两个文件的基本关系和作用:

HelloApplication.java

这个文件通常包含了 Spring Boot 应用的入口点,定义了一个主类和主方法(main 方法),用于启动整个 Spring Boot 应用。HelloApplication.java 使用了 @SpringBootApplication 注解,这是一个方便的注解,它封装了以下功能:

  • @Configuration:标记类作为应用程序上下文中的 bean 定义的源。
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置机制。
  • @ComponentScan:启用组件扫描,让 Spring 自动查找和注册项目中的 Spring 组件,包括控制器、服务、配置等。

这个类通常看起来是这样的:

java 复制代码
package com.example;

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

@SpringBootApplication
public class HelloApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}

HelloController.java

HelloController.java 文件定义了一个控制器,这个控制器处理通过 HTTP 请求接收到的特定调用。在你的例子中,它处理对根 URL 的 GET 请求并返回 "Hello World"。这个控制器由 @RestController 注解标记,意味着它的每个方法返回的数据直接写入 HTTP 响应体中,不经过视图解析器。

它们的关系

  • 启动和扫描 :当 HelloApplicationmain 方法通过调用 SpringApplication.run 启动 Spring 应用时,Spring 的自动配置和组件扫描机制会启动。这意味着 Spring 会自动查找包括 HelloController 在内的所有由 Spring 管理的组件
  • 依赖注入 :Spring 的依赖注入(DI)功能可以在需要时自动提供依赖(如服务、配置等)给 HelloController
  • 请求处理 :一旦应用启动,HelloController 就准备好响应通过 HTTP 发送到其映射路径的请求。HelloApplication 负责启动和配置必要的 Spring 上下文,而 HelloController 负责处理特定的请求。

简而言之,HelloApplication 负责配置和启动 Spring Boot 环境,HelloController 则是利用这个环境来响应特定的 HTTP 请求。这种结构使得 Spring Boot 应用可以轻松地扩展和维护。

相关推荐
guodingdingh2 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯4 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育4 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
掘金码甲哥4 小时前
这块终端神器, 必须吹爆!
后端
糖果店的幽灵5 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
Csvn5 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
腻害兔6 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影6 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao121317 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔8 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程