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 应用可以轻松地扩展和维护。

相关推荐
苍何几秒前
阿里出手,最强Coding Plan出炉,OpenClaw可以痛快玩了
后端
风象南21 分钟前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
神奇小汤圆1 小时前
为什么 Spring 强烈推荐你用 singleton
后端
NE_STOP1 小时前
MyBatis-mybatis入门与增删改查
java
Java编程爱好者1 小时前
面试必问:Semaphore 凭什么靠 AQS + CAS 实现限流?
后端
Java编程爱好者2 小时前
十万个why:加了 LIMIT 1,为什么查询反而变慢了?
后端
JavaTalks2 小时前
高并发保护实战:限流、熔断、降级如何配合落地
后端·架构·设计
代码丰2 小时前
为什么Java 接口中的存在 Static 和 Default 方法?
后端
用户571155176832 小时前
深入解析Spring BeanPostProcessor
后端