SpringBoot01:认识并构建SpringBoot项目

news2024/11/22 22:16:05

目录

一、Spring Boot简介

1、回顾什么是Spring?

2、Spring是如何简化java开发的?

3、什么是SpringBoot?

3.1、什么是SpringBoot呢?

3.2、所有技术框架的发展似乎都遵循一条主线规律

3.3、SpringBoot开发背景

3.4、Spring Boot基于Spring开发

3.5、Spring Boot的主要优点:

二、第一个Hello,world项目

1、准备工作

2、项目创建方式一:Spring Initializr:https://start.spring.io/

3、项目创建方式二:使用IDEA直接创建项目

4、项目结构分析

5、pom.xml文件分析

6、编写一个http接口

7、如何更改启动时显示的字符拼成的字母,SpringBoot呢?

一、Spring Boot简介

1、回顾什么是Spring?

  • Spring是一个开源框架,2003年兴起的一个轻量级的java开发框架,作者:Rod Johnson。
  • Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。

2、Spring是如何简化java开发的?

为了降低java开发的复杂性,Spring采用了以下4种关键策略:

  1. 基于POJO的轻量级和最小侵入性编程,所有东西都是bean;
  2. 通过IOC,依赖注入(DI)和面向接口实现松耦合;
  3. 基于切面(AOP)和惯例进行声明式编程;
  4. 通过切面和模板减少样式代码,RedisTemplate,xxxTemplate。

3、什么是SpringBoot?

3.1、什么是SpringBoot呢?

就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发:约定大于配置,you can “just run”。能迅速的开发web应用,几行代码开发一个http接口;

3.2、所有技术框架的发展似乎都遵循一条主线规律

从一个复杂应用场景衍生一种规范框架,人们只需要进行各种配置而不需要自己去实现它,这时候强大的配置功能成了优点;发展到一定程度之后,人们根据实际生产应用情况,选取其中实用功能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡:“约定大于配置”,进而衍生出一些一站式的解决方案

这就是java企业级应用->J2EE->springboot的过程。

3.3、SpringBoot开发背景

随着Spring不断的发展,设计的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念,甚至人称:配置地狱。Spring Boot正是在这样的一个背景下被抽象出来的开发框架,目的是为了让大家更容易的使用Spring、更容易地集成各种常用的中间件、开源软件。

3.4、Spring Boot基于Spring开发

Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spirng的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,多数SpringBoot应用只需要很少的Spring配置。同时它集成了大量常用的第三方库配置(例如:Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等)Spring Boot应用中这些第三方库几乎可以零配置的开箱即用。
简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架。
Spring Boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring boot已经当之无愧成为java领域最热门的的技术。

3.5、Spring Boot的主要优点:

  1. 为所有Spring开发者更快的入门;
  2. 开箱即用,提供各种默认配置来简化项目配置;
  3. 内嵌式容器简化web项目;
  4. 没有冗余代码生成和XML配置的要求。

二、第一个Hello,world项目

1、准备工作

我们将学习如何快速地创建一个SpringBoot应用,并且实现一个简单的Http请求处理。通过这个例子对SpringBoot有一个初步的了解,并体验其结构简单,开发快速的特性。
准备环境:

  1. java version "17.0.7"
  2. Apache Maven 3.8.7
  3. SpringBoot 2.x 最新版

开发工具:IDEA
创建基础项目说明:

Spring官方提供了非常方便的工具让我们快速构建应用;
Spring Initializr:https://start.spring.io/

2、项目创建方式一:Spring Initializr:https://start.spring.io/

        1、打开https://start.spring.io/;
        2、填写项目信息;
        3、点击“”Generate Project“按钮生成项目;下载此项目;
        4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。
        5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。

3、项目创建方式二:使用IDEA直接创建项目

        1、创建一个新项目;
        2、选择spring initalizr ,可以看到默认就是去官网的快速构建工具那里实现;
        3、填写项目信息;
        4、选择初始化的组件(初学者勾选web即可)
        5、填写项目路径;
        6、等待项目构建成功。

4、项目结构分析

通过上面步骤完成了基础项目的创建,就会自动生成以下文件:

        1、程序的主启动类;
        2、一个application.properties配置文件;
        3、一个测试类;
        4、一个pom.xml文件。

5、pom.xml文件分析

打开pom.xml,看看Spring Boot项目的依赖:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <!--web场景启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--SpringBoot单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <!-- 剔除依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

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

6、编写一个http接口

1、在主程序的统计目录下,新建一个controller包,(com.lucky.controller.HelloController)一定要在同级目录下,否则识别不到;
2、在包中新建一个HelloController类

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello,world!";
    }
}

3、从主程序启动项目,浏览器发起请求,看页面返回;控制台输出

 SpringBoot就是这么简单。所以我们常用它来建立我们的微服务项目!

4、将项目打包成jar包,点击maven的package;

 5、打包时如何配置跳过项目运行测试用例

<!--
    在工作中,很多情况下我们打包是不想执行测试用例的
    可能是测试用例不完事,或是测试用例会影响数据库数据
    跳过测试用例执
    -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!--跳过项目运行测试用例-->
        <skipTests>true</skipTests>
    </configuration>
</plugin>

如果打包成功,则会在target目录下生成一个jar包

7、如何更改启动时显示的字符拼成的字母,SpringBoot呢?

到项目下的resources目录下新建一个banner.txt文件即可。
图案可以到https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可!

完结~~~~撒花~~~~~感谢围观*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

有任何问题欢迎留言~我将不辞辛劳努力解决! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊一聊布隆过滤器

布隆过滤器是一个精巧而且经典的数据结构。 你可能没想到&#xff1a;RocketMQ、 Hbase 、Cassandra 、LevelDB 、RocksDB 这些知名项目中都有布隆过滤器的身影。 对于后端程序员来讲&#xff0c;学习和理解布隆过滤器有很大的必要性。下面&#xff0c;一起看一看布隆过滤器的…

智能客服外包服务在医药行业的应用

随着科技的不断进步&#xff0c;智能客服已经在各个行业得到了广泛应用&#xff0c;医药行业也不例外。那么&#xff0c;智能客服在医药行业中又有哪些应用呢&#xff1f;让我们一起来看看吧。 医药行业作为一个高度专业化且具有广泛需求的行业&#xff0c;每天都会涉及到大量…

10个免费PDF转PPT方法,请收好以备不时之需!

众所周知&#xff0c;PDF&#xff08;便携式文档格式&#xff09;文件广泛用于交换各种信息&#xff0c;包括文本、图像和图形。但有时&#xff0c;您可能想将 PDF 文件转换为其他格式&#xff0c;例如 PowerPoint。在本文中&#xff0c;我们将讨论 10 种将 PDF 转换为 PPT 的免…

6-js基础-2

JavaScript 基础 - 2 理解什么是流程控制&#xff0c;知道条件控制的种类并掌握其对应的语法规则&#xff0c;具备利用循环编写简易ATM取款机程序能力 类型转换语句综合案例 今日重点单词&#xff1a; 类型转换 类型转换&#xff1a;把一种数据类型转换成另外一种数据类型 为…

快速搭建 Nuxt2 项目

文章目录 01 Nuxt 能提供哪些功能&#xff1f;有什么益处&#xff1f;02 快速搭建项目2.1 安装 create-nuxt-app 脚手架工具2.2 使用脚手架搭建项目 01 Nuxt 能提供哪些功能&#xff1f;有什么益处&#xff1f; 服务端渲染&#xff1a;Nuxt 是基于 Vue.js 的 服务端渲染 框架&…

文献学习-联合抽取-Joint entity and relation extraction based on a hybrid neural network

目录 1、Introduction 2、Related works 2.1 Named entity recognition 2.2 Relation classification 2.3 Joint entity and relation extraction 2.4 LSTM and CNN models On NLP 3、Our method 3.1 Bidirectional LSTM encoding layer 3.2 Named entity recogniton …

OpenStack(1)--创建实例

目录 一、上传镜像 1.1 新建目录 1.2 上传至glance 1.3 查看镜像 二、新建实例 2.1 获取秘钥 2.2 新建实例 2.3 新建实例admin-vm 2.4 获取实例VNC的url 2.5 nova常用命令 一、上传镜像 1.1 新建目录 上传名为cirros-0.3.4-x86_64-disk.img的Linux测试镜像&#xf…

Clock Rules(C Rules)

scan clocks的规则检查确保它们被正确的定义和操作。可以选择任意时钟规则检查的handling为error、warning、not或ignore。 Clock Terminology 时钟规则信息包含两个重复发生的概念,为了更好地使用这些信息,应该理解以下概念。 Clock Signals 如果一个信号能够改变一个se…

unity发布apk获取读写权限

实测版本&#xff1a;unity2019 操作&#xff1a;1.修改Manifest文件 2.在代码中直接调用API代码设置&#xff08;可能不用这一步&#xff09; Mac系统&#xff1a;Unity.app同级目录&#xff1a; PlaybackEngines/AndroidPlayer/Apk/ Win系统&#xff1a;Unity安装目录下…

5-响应式

01-媒体查询 基本写法 max-width&#xff1a;最大宽度&#xff08;小于等于&#xff09;min-width&#xff1a;最小宽度&#xff08;大于等于&#xff09; 书写顺序 min-width&#xff08;从小到大&#xff09;max-width&#xff08;从大到小&#xff09; 案例-左侧隐藏 需…

measure 一维测量 Metrology 二维测量

1维测量就是测长度&#xff0c;一个物体的长度。 2维测量就是在2维空间上测量&#xff0c;圆和矩形。 gen_measure_rectangle2 (TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2, 2464, 2056, nearest_neighbor, MsrHandle_Measure_01_0) * Measure 01:…

ChatGPT 实战:快速了解一个新领域

前段时间在社区里看到有人在分享&#xff1a;如何用 ChatGPT 麦肯锡方法论洞察一个行业&#xff0c;感觉这个方法在陌生行业的研究上很有帮助&#xff0c;同时我也一直好奇&#xff0c;投资经理在一两周的时间里如何快速了解一个新领域并做出投资决策的。先解决你的第一个疑问…

网络安全学习心得

我的学习心得&#xff0c;我认为能不能自学成功的要素有两点。 第一点就是自身的问题&#xff0c;虽然想要转行学习安全的人很多&#xff0c;但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习安全&#xff0c;这是完全不可能的。 所以能不能学成并…

Redis6之持久化操作

目录 RDB 触发 工作流程 持久化备份 优点 缺点 AOF 触发 频率配置 持久化流程 数据修复 优点 缺点 混合持久化 触发 优点 缺点 如何选择 redis是一个内存数据库&#xff0c;一旦断电或服务器进程退出&#xff0c;内存数据库中的数据将全部丢失&#xff0c;所以…

【计算机视觉】中科院发布Fast SAM,精度相当SAM,速度提升了50倍!

文章目录 一、导读二、介绍三、方法3.1 实例分割3.2 提示引导选择3.2.1 点提示3.2.2 框提示3.2.3 文本提示 四、实验结果五、不足之处六、结论 一、导读 SAM已经成为许多高级任务&#xff08;如图像分割、图像描述和图像编辑&#xff09;的基础步骤。然而&#xff0c;其巨大的…

【云原生丶Docker】Docker容器常用命令大全

在 Docker 核心概念理解 一文中&#xff0c;我们知道 Docker容器 其实就是一个轻量级的沙盒&#xff0c;应用运行在不同的容器中从而实现隔离效果。容器的创建和运行是以镜像为基础的&#xff0c;容器可以被创建、销毁、启动和停止等。本文将介绍下容器的这些常用操作命令。 1、…

2、电商数仓(业务数据采集平台)电商业务流程、电商常识、电商系统表结构、业务数据模拟、业务数据采集模块

1、电商业务简介 1.1 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明&#xff0c;用户点开电商首页开始浏览&#xff0c;可能会通过分类查询也可能通过全文搜索寻找自己中意的商品&#xff0c;这些商品无疑都是存储在后台的管理系统中的。 当用户寻找…

imx6ull——多点电容触摸

电容触摸寄存器 触点最多5个 触摸屏实现由 IIC驱动、中断驱动、 input子系统组成 触摸屏类型Type A和 Type B Type A&#xff1a;适用于触摸点不能被区分或者追踪&#xff0c;此类型的设备上报原始数据 (此类型在实际使 用中非常少&#xff01; Type B&#xff1a;适用于有…

SikuliX 实战

一. SikuliX是什么 SikuliX的前身是 Sikuli。Sikuli是由MIT&#xff08;麻省理工学院&#xff09;研究团队发布的一种基于OpenCV图像识别技术的自动化工具软件。 Sikuli 是2009 年由在麻省理工学院用户界面设计小组作为一个开源研究项目&#xff0c;负责人分别是Tsung-Hsiang …

42 # 前端 blob 类型

前端的二进制 文件类型 Blob&#xff1a;二进制文件类型input 的 typefile&#xff1a;file 类型&#xff0c;继承于 Blob 前端实现下载功能 实现下载字符串到文件里&#xff0c;需要将字符串包装成二进制类型 <!DOCTYPE html> <html lang"en"><h…