Spring Boot创建与运行

news2024/11/27 16:46:53

Spring Boot创建与运行

​ 经过之前 Spring 文章的铺垫,终于来到了基于 Spring ,并且也是 Spring 最火的框架之一 Spring Boot ,在企业或者个人项目中,基本都是使用 Spring Boot ,所以 Spring Boot 在 Spring 的学习阶段是非常重要的。

文章目录

  • Spring Boot创建与运行
    • 一、什么是Spring Boot
    • 二、Spring Boot 的优点
    • 三、Spring Boot 的创建
      • 3.1、网页版的 Spring Boot 创建 (了解)
    • 四、Spring Boot 目录说明
    • 五、运行项目
      • 5.1、@ResponseBody
    • 六、包路径错误 (注意事项)
      • 6.1、约定大于配置

一、什么是Spring Boot

​ Spirng 的诞生是为了简化 Java 程序的开发,最早一起使用的 servlet ,servlet 能用是能用但是非常的麻烦不方便还容易出错,就比如使用一个依赖是要到中央仓库 Maven 里面去找的,还要对应去找里面的版本号,即麻烦又容易出错;所以之后就诞生 Spring,但是还可在此基础上更简洁就又诞生了 Spring Boot。

简而言之,Spinrg 的诞生是为了简化 Java 程序,而 Spring Boot 的诞生是为了简化 Spring 程序开发;Spring Boot 也是为了能快速开发 Spring 框架

二、Spring Boot 的优点

1、快速继承框架:Spring Boot 提供了启动添加依赖的功能,无需在 Maven 里面去找对应版本号的依赖,在Spring Boot 里面所有的版本号都集成了,直接添加依赖即可,用于秒级集成各种框架。

2、内置运行容器:无需配置 Tomcat 等 Web 容器,直接就可以运行和部署程序。

3、快速部署项目:无需外部容易即可启动并运行项目。

4、可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发。

5、支持更多监控的指标,可以更好的了解项目的运行情况。

以上哪一种优点不是之前 Servlet 和 Spring 的短板,所以每一次的新技术的诞生和改进相比于之前的效率都是 “质” 的提升。

三、Spring Boot 的创建

Idea 分为 社区版和专业版,这里主要是讲社区版本的安装。

1、首先社区版要安装一个插件 Spring Assistant Spring 助手

image-20230720193517090

2、安装完成后,就可以创建Spring Boot 的项目了。

image-20230720195931477

第二步的时候需要改 java 的类别,推荐使用 java 8版本,还有就是需要改成 Maven 项目;第三步是添加依赖是最关键的步骤,以前都是在 Maven 中央仓库里面找的依赖,现在直接就可以添加,非常的方便快捷,效率高还不容易出错(也要注意版本号的选择);第四步就是保存路径了不必多说。

注意事项:

创建好了 Spring Boot 之后可能加载的比较慢,进去之后需要确认一下自己的 Maven 是否是国内源,不是的话需要配置成国内的源,不然加载会很慢而且有时候可能加载出错等等。

image-20230720200627534

国内镜像 Setting.xml 配置如下:

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>

​ 这里需要注意一下 < mirrors > 镜像,有可能你是注解了或者没有配置其他国内镜像,我这里配置的是阿里云的可以使用,这个只是 setting.xml 的一重要的部分,完整的可以点击这里查看 Spring boot Maven 国内源settings的配置

3.1、网页版的 Spring Boot 创建 (了解)

​ 创建 Spring Boot 不是只有在编译器里面创建,在官方提供的网页版也可以创建 Spring Boot 项目。

​ 官网地址:https://start.spring.io/

image-20230720203242611

​ 都设置好之后,点击 generate 就会生产成一个压缩包,从压缩包里面解压,选择 Idea 打开就成了。

四、Spring Boot 目录说明

​ 有些目录没有用处,也不需要使用时可以删除的

image-20230720205719296

Spring Boot 项目主要目录:

image-20230720231425943

两个主要目录:

  • java 源文件
  • resources 配置文件
    • static:静态资源文件夹
    • templates:模板资源文件夹

其中里面 pom.xml 文件的也是非常重要的。里面的启动文件 @SpringBootApplication 是 Spring Boot 的启动类注解,点击里面的 main 方法就可以运行 Spring Boot 项目了。

在 Spring Boot 中就不需要配置组件 xml 的扫描路径了

五、运行项目

​ Spring Boot 本就是用来实现前后端的一个工具( Web 项目或者接口),在浏览器里面输入了一个信息之后,url 地址要能够对应到某个程序,接下来用 Spring Boot 来实现基础使用,浏览器及用户之间的交互功能,输入一个 Hello World

​ 1、首先我们使用注解先把这个程序放入 Spring 容器中,确保在 Spring Boot 启动之后可以用到它

​ 2、因为需要浏览器映射到后端程序需要添加一个新的注解 @RequestMapping 它的作用就是与 servlet 中的 @WebServlet 一样映射路由,但是又有一些差别;区别就是@RequestMapping 必须放在方法上,而@WebServlet 是加在类上的。

@Controller //1
@RequestMapping("/index") // 2
public class HelloController {
    
    @RequestMapping("/sayHi") //3 http://localhost:8080/index/sayHi
    public String sayHi() {
        return "你好 Spring Boot";
    }
}

现在我们启动Spring Boot ,使用 http://localhost:8080/index/sayHi,看是否能成功访问

image-20230721100026367

5.1、@ResponseBody

❓❓❓可以看到没有访问成功,出现了404,那是什么原因导致的尼?

​ 原因:在 Spring web 最开始的时候是没有前后端分离的,以上代码的写法是返回了一个页面,而非数据信息,没有一个页面能叫 你好 Spring Boot 所以会出现 404,为了让它返回一个数据信息需要再次添加一个注解 @ResponseBody ,这个注解加在方法或者类上都是可以的。加上这个注解就返回的是一个非页面的数据(非静态页面)。

​ 3、加上@ResponseBody 返回一个数据信息给浏览器

@Controller //1
@RequestMapping("/index") // 2
public class HelloController {
    
    @RequestMapping("/sayHi") //2 http://localhost:8080/index/sayHi
    @ResponseBody // 3
    public String sayHi() {
        return "<h1>你好 Spring Boot<h1>";
    }
}

这样就能访问成功了。

在这里插入图片描述

@ResponseBody 访问的是一个数据,首先它回去判断一下是否是 json 格式,不是 json 格式就会判断是否是 html 格式。如果返回的是 json ,那么 Spring Boot 就会帮你适配返回的就是一个 json 数据

@Controller 
@RequestMapping("/index") 
public class HelloController {

    @RequestMapping("/sayHi2") //localhost:8080/index/sayHi2
    @ResponseBody
    public HashMap<String,Object> sayHi2() {
        HashMap hashMap = new HashMap();
        hashMap.put("name","java");
        hashMap.put("password","123");
        return hashMap;
    }
}

这里Spring Boot 就会通过你的类型来帮你自动适配返回的类型,就如说这了是键值对,Spring Boot 就会给你适配为 json 数据格式,最后运行的结果为:

{"password":"123","name":"java"}

所以说 Spring Boot 的框架是非常强大的,你返回的是 String 就自动适配 html 格式,键值对就是适配 json 格式。

总结:Spring Boot 里面经常使用的两个注解就是 @RequestMapping@ResponseBody ,并且这两个注解既能修饰方法也能修饰类。

六、包路径错误 (注意事项)

​ Spring Boot 有一个启动类注解是 @SpringBootApplication 如果把我们项目程序放到了与启动类是平级或者说是在启动类以下的子类就能运行成功。

image-20230721112143061

​ 如果说你的项目程序与启动类不在同级或者说是以下级别,Spring Boot 就不会识别到,这就说明 Spring Boot项目没有将对象注入到容器里面

image-20230721113013478

6.1、约定大于配置

​ 以上的原因就是Spring Boot 的设计原则就是约定大于配置 这是 Spring Boot 设计约定好的规则,按照它的规则进行就好了,在 Spring 中也是 XML 配置文件中也是通过 Bean 来扫描的路径,而 Spring Boot 按照它的规则约定来的话就会自动扫描路径把项目程序注入到容器中。


最后总结:

由于 Spring 在后面的开发中发现Spring 使用越来越臃肿,那么 Spring Boot 就从此诞生了,简单来说 Spring Boot 是为了快速开发 Spring 而诞生的。

优点:

1、快速继承框架:Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。

2、内置运行容器:无需配置 Tomcat 等 Web 容器,直接就可以运行和部署程序。

3、快速部署项目:无需外部容易即可启动并运行项目。

4、可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发。

5、支持更多监控的指标,可以更好的了解项目的运行情况。

Spring Boot 可以使用 Idea 或者网页官网创建,它的设计思想是 约定大于配置,类上面有 @SpringBootApplication 就是 Spring Boot 的启动类。

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

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

相关文章

Spring Boot 源码学习之@EnableAutoConfiguration注解

EnableAutoConfiguration 注解 引言主要内容1. EnableAutoConfiguration 功能解析1.1 常见的自动配置示例1.2 源码介绍 2. Import 注解介绍3. AutoConfigurationPackage 注解介绍 总结 引言 在 Huazie 的上篇博文中&#xff0c;我们详细了解了关于 SpringBootApplication 注解…

【论文阅读 03】机器学习算法在颈动脉斑块影像学分类中的研究进展

读完之后就是&#xff0c;总结 机器学习&#xff08;SVM、小波&#xff09;和深度学习&#xff08;CNN&#xff09;在 颈动脉斑块影像学中的 分类效果。只讨论了超声、磁共振两种成像 Chin J Clin Neurosci 临床神经科学杂志 复旦大学 颈动脉斑块( carotid plaques) 是一种…

JavaScript基础篇(31-40题)

此文章&#xff0c;来源于印客学院的资料【第一部分&#xff1a;基础篇(105题)】&#xff0c;也有一些从网上查找的补充。 这里只是分享&#xff0c;便于学习。 诸君可以根据自己实际情况&#xff0c;自行衡量&#xff0c;看看哪里需要加强。 概述如下&#xff1a; javascri…

使用Docker在局域网安装GitLab

使用 Docker 安装 GitLab 1. 安装GitLab 最近想在本地创建一个GitLab仓库&#xff0c;简单记录一下&#xff1a; 简单设置一个GitLab信息的存储目录 export GITLAB_HOME/etc/docker/gitlab/ && mkdir &GITLAB_HOMEdocker中启动 sudo docker run --detach \# 以…

C++:类和对象(上)---初步认识类和this指针

文章目录 面向过程和面向对象类的引入类的定义类定义的方式 类的访问限定符类的实例化类对象模型类对象的大小 this指针 面向过程和面向对象 C语言是一门面向过程的语言关注的是过程&#xff0c;确认一个问题求解的步骤&#xff0c;再一步一步对它进行解决 C是一门基于面向对…

【学会动态规划】最小路径和(9)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

Kotlin 协程基础入门:Channel(通道)

简介 Kotlin 中的 Channel&#xff08;通道&#xff09;是一种协程间通信的机制&#xff0c;用于在协程之间传递数据。它提供了一种有序、线程安全的方式&#xff0c;让生产者和消费者之间进行异步数据传输。 Channel 这个管道的其中一端&#xff0c;是发送方&#xff1b;管道…

OpenCV实现照片换底色处理

目录 1.导言 2.引言 3.代码分析 4.优化改进 5.总结 1.导言 在图像处理领域&#xff0c;OpenCV是一款强大而广泛应用的开源库&#xff0c;能够提供丰富的图像处理和计算机视觉功能。本篇博客将介绍如何利用Qt 编辑器调用OpenCV库对照片进行换底色处理&#xff0c;实现更加…

Promise 讲解,js知识,es6

文章目录 一、Promise的三种状态1. 初始态pending2. 成功态fulfilled&#xff0c;调用resolve方法3. 失败态rejected&#xff0c;调用reject方法 二、Promise的方法then方法catch方法 三、async和awaitasync 函数await 表达式 四、代码举例帮助理解1、Promise的值通过then方法获…

【idea】编译热部署

项目场景&#xff1a; 实际工作中&#xff0c;用到了idea&#xff0c;发现idea不编译代码&#xff0c;热部署什么的都不行 问题描述 在实际的工作中idea遇到了各种问题&#xff0c;之前一直用的2022版的&#xff0c;公司用的jboss起的项目&#xff0c;启动过程极其痛苦&#…

电子档案管理系统

电子文档 登陆成功后点击左上角“”选择“档案管理”跳转到“档案管理首页”如下图: 该界面列出用户被授权查看的可视化数据图形,柱图、饼图、线图、雷达图等,并结合数据仓库里的动态数据进行数据展现。 图形所展示的数据可根据企业需求定制,点击图形即可查看关联内容,方…

C++类与对象(上部曲)

目录 面向过程和面向对象初步认识 类的引入 类的定义 类的两种定义方式&#xff1a; 1. 声明和定义全部放在类体中 2. 类声明放在.h文件中&#xff0c;成员函数定义放在.cpp文件中 类的访问限定符及封装 1 访问限定符 2 封装 类的实例化 类对象的存储方式 this指针 …

IDEA快速创建SpringBoot

文件具有错误的版本 61.0, 应为 52.0报错可以看看是不是Springboot的版本比较高 和jdk版本不匹配 package com.qf.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframewor…

黑马 pink h5+css3+移动端前端

网页概念 网页是网站的一页,网页有很多元素组成,包括视频图片文字视频链接等等,以.htm和.html后缀结尾,俗称html文件 HTML 超文本标记语言,描述网页语言,不是编程语言,是标记语言,有标签组成 超文本指的是不光文本,还有图片视频等等标签 常用浏览器 firefox google safari…

从Vue2到Vue3【四】——Composition API(第四章)

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API&#xff08;第一章&#xff09;从Vue2到Vue3【二】Composition API&#xff08;第二章&#xff09;从Vue2到Vue3【三】Composition API&#xff08;第三章&#xff09;从Vue2到Vue3【四】C…

os.environ[“CUDA_VISIBLE_DEVICES“]学习总结

今天发现一个很有意思的东西 import torch import os # Specify the GPU device os.environ["CUDA_VISIBLE_DEVICES"] "1" print(torch.cuda.is_available())但是如果修改下面的设置后&#xff0c;结果就变成了 import torch import os # Specify the…

【100天精通python】Day7:数据结构_列表 List的创建、删除、访问、遍历、统计、排序、推导等使用

目录 1 列表的创建 2 列表的删除 3 访问列表元素 4 遍历列表 5 添加修改删除列表元素 6 对列表进行统计和计算 7 对列表进行排序 8 列表推导式 9 多维列表 在Python中&#xff0c;列表是一种有序的可变数据类型&#xff0c;用于存储一组元素。 列表使用方括号“[] ”来…

汇编习题1-100和

.text .globl _start_start:mov r0,#0MOV r1,#0stop:cmp r1,#0x64addcc r1,r1,#0x1addcc r0,r0,r1b stop .end运行结果&#xff1a; 寄存器R0就为16进制的结果

K8S初级入门系列之四-Namespace/ConfigMap/Secret

一、前言 本章节我们继续学习Namespace、ConfigMap、Secret基础概念&#xff0c;了解他们基本用法和操作。NameSpace为命名空间&#xff0c;在同一集群中试下资源隔离。ConfigMap通过key-value的方式实现明文配置数据的保存&#xff0c;Secret与ConfigMap类似&#xff0c;不过是…

Windows下使用rocketMq

1、下载&#xff08;下载zip后解压即可&#xff09; 下载地址&#xff1a;下载 | RocketMQ 2、配置环境变量&#xff08;注意&#xff1a;该目录的下一级是bin&#xff09; 3、启动 在bin目录下使用cmd 分别输入 3.1 启动name server (下图是启动成功的显示&#xff0c;窗口…