SpringBoot初学习——HelloWorld 的介绍

本文介绍SpringBoot简化项目开发流程,通过实例演示如何使用SpringBoot快速搭建一个HelloWorld项目,包括Pom.xml配置、主程序代码及逻辑代码的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.前言

     一年多了,感觉除了工作上遇到的,似乎没有接触工作外的技术。不进则退,虽然工作相对安逸,可以还是有所担忧。趁着年轻,多学学东西。先定个小目标,学习完Springboot。关于SpringBoot的笔记这是第一篇。

二.SpringBoot 的作用

    对于接触过SSH、SSM框架的人来说。一个项目开发的流程大致如下:新建一个项目——导入相应的jar包——配置各种配置文件——写逻辑代码——测试打包——配置运行环境——跑项目。

    SpringBoot 的作用就是将以上多余的步骤比如:导入jar包,写配置文件,配置运行环境 进行省略,让SpringBoot给你做,你乖乖写你的逻辑代码就好了(好吧,怎么感觉越来越程序员被工具人化,越来越容易被替代 了。。。。。)

三.一个简单HelloWorld程序所需的文件以及代码

   该代码的作用是启动一个简单的web项目,访问结果为页面显示Hello World。

1.Pom.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.fd</groupId>
    <artifactId>springboot-01-helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. 主程序代码

package com.springboot;

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

@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        // Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

3.逻辑代码

package com.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!";
    }
}

四.解析配置文件和代码的作用

首先思考:完成这个一个访问,如果用以往的架构知识,那么至少涉及到SpringMVC 和Spring 这两个架构。那么上面这几个文件,如何实现了Spring和SpringMVC的功能呢?

1.Pom.xml文件

1.1.首先看父类spring-boot-starter-parent

这个是spring-boot-starter-parent,可见其也有父类:spring-boot-dependencies 从名字看出,父类应该标明了依赖

在父类spring-boot-dependencies中我们看到了版本控制的注解,所以说明我们新建的Spring-boot项目的版本控制在这里

1.2.接着我们来看看依赖   spring-boot-starter-web  目前对于这个的理解,我只停留在这代表了Web的相关需要配置的东西

点进去看看,原来spring-boot-starter-web里面包含了一个Web项目所需要的依赖

接着回过头看看,spring-boot-starter-web的父类spring-boot-starters。我们可以看到父类中有许多的spring-boot-starter-xxx

,由此我们可以大概知道,一个starter代表一个功能模块,项目需要用到那个功能,就导入哪个功能模块,像我们的项目,用到了Web功能,所以是spring-boot-starter-web模块

所以说,spring-boot-starter-web的作用就是导入项目需要的相关依赖,而版本就是由spring-boot-starter-parent控制

总结:

a.关于Pom文件,父启动器管理所有依赖的版本号;子启动器管理了依赖的类型.

b.SpringBoot 是将所有功能场景都抽取出来并封装为一个个的启动器。然后开发人员根据需要,选择启动器。SpringBoot便会为项目配置相关开发环境。

2.接下来我们来解析一下主程序的代码

main中的代码作用是启动类或者项目的意思,那么为什么逻辑代码类也会生效尼?这个我们需要来看一下@SpringBootApplication这个注解在这里的发挥了什么作用

可以看出@SpringBootApplication 其实是一个复合注解,主要由@SpringBootConfiguration和@EnableAutoConfiguration

从字面来理解,@SpringBootConfiguration应该表示被这个标注的都属于SpringBoot的构造,其实可以继续看下去,@SpringBootConfiguration的最底层就是@Component(被@Component标注的类,代表这个类将被spring容器中进行管理)

接着对@EnableAutoConfiguration进行解析,字面理解为 实现自动化的结构,当然实际的作用如下:

以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

可以看出@EnableAutoConfiguration是由两个注解复合而成, @AutoConfigurationPackage(自动配置包)和@Import({EnableAutoConfigurationImportSelector.class}),而@AutoConfigurationPackage的底层是@Import({Registrar.class})

@Import的作用就是将被其注解的类导入到Spring的容器中,那么Registrar.class呢?

看源码,其实主要是类中的registerBeanDefinitions方法,该方法的作用是将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;这个主要作用是起到范围约束作用

接下来我们来看看   EnableAutoConfigurationImportSelector.class  字面理解应该是自动导入哪些组件的选择器。

我们来看看EnableAutoConfigurationImportSelector 父类的AutoConfigurationImportSelector的

打了断点以后,我们可以发现该方法的作用是

将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了自动配置类,免去了我们手动编写配置注入功能组件等的工作。

所以,@EnableAutoConfiguration的作用就是扫描被@SpringBootApplication所注解的包下所有的组件(@AutoConfigurationPackage)自动扫描导入到Spring容器(@Import({EnableAutoConfigurationImportSelector.class})

)  而@SpringBootConfiguration的作用主要是起@Component作用((被@Component标注的类,代表这个类将被spring容器中进行管理))

总结:通过注解和导入功能包,最终才使我们的项目可以正确运行并被访问。其中POM.xml文件起导入依赖包的功能,@SpringBootApplication起到了注解以及自动扫描的作用(相当原来的配置文件)。

内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值