Spring Boot项目的创建与使用

1.SpringBoot初识

SpringBoot是什么

介绍

​ 为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的框架,它就是 Spring Boot。

Spring Boot是由Pivotal团队提供的全新,其设计目的是用来新应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

​ Spring Boot 具有 Spring 一切优秀特性,Spring 能做的事,Spring Boot 都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。随着近些年来微服务技术的流行,Spring Boot 也成为了时下炙手可热的技术。

特点

  • 为所有 Spring 开发提供从根本上更快且可广泛访问的入门体验

  • 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的jar包和war包

  • 开箱即用,提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置

  • 内嵌Tomcat或Jetty等Servlet容器

  • 尽可能自动配置Spring容器

  • 提供一系列大型项目通用的非功能特性,(例如嵌入式服务器、安全性、指标、健康检查和外部化配置)

  • 绝对没有代码生成,不需要XML配置。

重要策略

面试题:

SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置

1.开箱即用

​ 开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。

2.约定优于配置

​ 约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需要的配置。

本质上是对系统、类库或框架中一些东西(如配置信息)假定一个大众化合理的默认值(缺省值)。例如在模型中存在一个名为User的类,那么对应到数据库会存在一个名为user的表,只有在偏离这个约定时才需要做相关的配置(例如你想将表名命名为t_user等非user时才需要写关于这个名字的配置)。简单来说就是假如你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时时才需要对约定进行替换配置。

3.内置tomcat

SpringBoot 项目创建

方式一 、创建maven项目

创建maven工程

修改pom.xml配置

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.7</version>
</parent>

添加依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

编写代码

@SpringBootApplication
@RestController
public class DemoApplication {@RequestMapping("/hello")public String hello(){return "hello world!";}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

方式二、官网向导创建

打开官网向导

打开浏览器,输入网址 http://start.spring.io/ ,如图 所示

创建一个最简单的 SpringBoot 应用,填写项目信息。

  • GENERATE : 直接生成并下载项目

  • EXPLORE : 查看项目

  • SHARE : 分享项目 导入IDEA

main方法

我们应用程序的最后一部分是main方法。这是遵循Java约定的应用程序入口点的标准方法。我们的main方法SpringApplication通过调用委托给Spring Boot的类run。 SpringApplication引导我们的应用程序,启动Spring,这反过来又启动了自动配置的Tomcat Web服务器。

@SpringBootApplication
@RestController
public class DemoApplication {@RequestMapping("/hello")public String hello(){return "hello world!";}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

方式三、IDEA 向导创建

运行示例

打开Web浏览器到http://localhost:8080/hello,则应该看到以下输出:

创建一个可执行的jar

通过创建一个可以在生产环境中运行的完全独立的可执行jar文件来结束示例。

要创建可执行jar,我们需要将添加spring-boot-maven-plugin到pom.xml。为此,请在该dependencies部分下方插入以下行:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

从命令行运行mvn package,如下所示:

如果查看target目录,则应该看到sbdemo-0.0.1-SNAPSHOT.jar。该文件的大小应为18.5 MB左右。如果您想窥视内部,可以使用jar tvf,如下所示:

要运行该应用程序,请使用以下java -jar命令:

java -jar sbdemo-0.0.1-SNAPSHOT.jar

1.通过IDE创建Spring Boot项目

2.目录结构

3.新建TestController控制器

@Controller
public class TestController {@RequestMapping("/test")public ModelAndView test(@RequestParam(name = "name", defaultValue = "刘德华") String name){ModelAndView mv = new ModelAndView();mv.addObject("name", name);mv.setViewName("test");return mv;}
}

4.新建/resources/templates/test.ftlh模板文件

<html><body><h1>页面参数: ${name}</h1>
</body></html>

5.运行项目

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java JWT:原理、机制及案例示范

一、什么是JWT&#xff1f; 1.1 JWT的基本概念 JWT&#xff08;JSON Web Token&#xff09;是一种用于在各方之间传递JSON格式信息的紧凑、URL安全的令牌&#xff08;Token&#xff09;。JWT的主要作用是验证用户身份或权限。它由三部分组成&#xff1a; Header&#xff08;…

Ubuntu 上安装 MySQL 并且实现远程登录

目录 1. 安装MySQL 2. 安全配置MySQL 3. 配置MySQL远程登录 3.1. 允许远程连接 3.2. 重启MySQL服务 3.3. 为用户分配远程访问权限 进入MySQL后&#xff0c;执行以下命令&#xff1a; 3.4. 创建新用户 3.5. 授予权限 3.6. 刷新权限 3.7. 退出 MySQL 控制台 4. 配置防火…

大数据新视界 --大数据大厂之大数据驱动下的物流供应链优化:实时追踪与智能调配

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

科研绘图系列:R语言蝴蝶图(Butterfly Chart)

文章目录 介绍加载R包数据函数画图系统信息介绍 蝴蝶图(Butterfly Chart),也被称为龙卷风图(Tornado Chart)或双轴图(Dual-Axis Chart),是一种用于展示两组对比数据的图表。这种图表通过在中心轴两侧分别展示两组数据的条形图,形似蝴蝶的翅膀,因此得名。蝴蝶图的特点…

汉语言文学做大数据七年实际工作经验分享普通人快来围观

&#xff08;一&#xff09;没有人带你 社会上&#xff0c;都很现实。就是进了公司&#xff0c;有师傅&#xff0c;师傅也没空带你&#xff0c;最多就是有空的时候帮你解决问题。 无论是做啥工作&#xff0c;都要靠自己努力。努力不会成为笑话&#xff0c;不努力就是笑话。就…

STM32 QSPI接口驱动GD/W25Qxx配置简要

STM32 QSPI接口GD/W25Qxx配置简要 &#x1f4dd;本篇会具体涉及介绍Winbond&#xff08;华邦&#xff09;和GD(兆易创新) NOR flash相关型号指令差异。由于网络上可以搜索到很多相关QSPI相关知识内容&#xff0c;不对QSPI通讯协议做深度解析。 &#x1f516;首先确保所使用的ST…

VScode 自定义代码配色方案

vscode是一款高度自定义配置的编辑器, 我们来看看如何使用它自定义配色吧 首先自定义代码配色是什么呢? 看看我的代码界面 简而言之, 就是给你的代码的不同语义(类名, 函数名, 关键字, 变量)等设置不同的颜色, 使得代码的可读性变强. 其实很多主题已经给出了定制好的配色方案…

闯关leetcode——88. Merge Sorted Array

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/merge-sorted-array/description/ 内容 You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements …

为什么人工智能用 Python?

人工智能领域倾向于使用Python&#xff0c;主要归因于Python的多个显著优势&#xff1a; 简洁性与可读性&#xff1a;Python的语法设计简洁明了&#xff0c;代码易于阅读和理解&#xff0c;这对于涉及复杂算法和逻辑的人工智能项目尤为重要。它降低了编程门槛&#xff0c;使得…

Unity3D 单例模式

Unity3D 泛型单例 单例模式 单例模式是一种创建型设计模式&#xff0c;能够保证一个类只有一个实例&#xff0c;提供访问实例的全局节点。 通常会把一些管理类设置成单例&#xff0c;例如 GameManager、UIManager 等&#xff0c;可以很方便地使用这些管理类单例&#xff0c;…

DGX的优势

NVIDIA DGX 的 AI 领导力 文章目录 前言一、概述推动跨行业的 AI 创新二、优势客户体验到哪些好处?1. 利用生成式 AI 释放研究人员的潜力2. 加快现代应用程序的上市时间3. 利用 AI 改善客户体验三、性能性能很重要1. 为世界上最先进的超级计算机提供动力2. 打破世界纪录3. 提高…

Go编译为可执行文件

在window下打包成其他系统可运行的文件 1.在window下打包成window下可执行文件 在项目main.go同级目录下&#xff0c;逐条执行以下命令 set CGO_ENABLED0 set GOOSwindows set GOARCHamd64 go build -o main-windows.exe main.go 2.在window下打包成linux 在项目main.go同级目…

Python从入门到高手6.3节-字符串操作方法

目录 6.3.1 字符串常用操作方法 6.3.2 获取字符串长度 6.3.3 字符串的大小写操作 6.3.4 删除字符串中的指定字符 6.3.5 字符串的子串查找 6.3.6 字符串的子串统计 6.3.7 字符串的子串替换 6.3.8 字符串的拆分函数 6.3.9 字符串的前缀与后缀 6.3.10 你一定要成为高手 …

FLINK内存管理解析,taskmanager、jobmanager

1、在 Flink 中设置内存的方法是配置以下两个选项之一&#xff1a; 1&#xff09;Total Flink memory&#xff1a;taskmanager.memory.flink.sizejobmanager.memory.flink.size 2&#xff09;Total process memory&#xff1a;taskmanager.memory.process.sizejobmanager.mem…

Linux驱动开发(速记版)--设备模型

第八十章 设备模型基本框架-kobject 和 kset 80.1 什么是设备模型 设备模型使Linux内核处理复杂设备更高效。 字符设备驱动适用于简单设备&#xff0c;但对于电源管理和热插拔&#xff0c;不够灵活。 设备模型允许开发人员以高级方式描述硬件及关系&#xff0c;提供API处理设备…

vue3学习之插槽slot

关于slot web组件内部的占位符&#xff0c;可以使用自己的标记填充这个占位符 &#xff0c;具名插槽就是在slot标签上添加name属性&#xff08;https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/slot&#xff09; vue3官方文档&#xff1a;https://cn.vuejs.org/gui…

论文阅读 BLIP-2

Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 使用冻结的图像编码器和大型语言模型进行语言-图像预训练的引导 BLIP-2 通过一个轻量级的查询变换器弥合了模态之间的差距。 Querying Transformer 第一阶段通过冻结的图像编…

构建流媒体管道:利用 Docker 部署 Nginx-RTMP 从 FFmpeg RTMP 推流到 HLS 播放的完整流程

最近要实现一个类似导播台的功能&#xff0c;于是我先用 FFmpeg 实现一个参考对照的 Demo&#xff0c;我将其整理为一篇文章&#xff0c;方便后续大家或者和自己参考&#xff01; 1、软件工具介绍 本次部署相关软件 / 工具如下&#xff1a; FFmpeg&#xff1a;全称是 Fast Fo…

YOLO11改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文介绍了一种新颖的动态稀疏注意力机制…

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表&#xff08;重点掌握&#xff09;】 可以使用类&#xff1a;“ConcurrentHashMap” ★ConcurrentHashMap对比HashMap和Hashtable的优化点 1.优化了锁的粒度【最核心】 //Hashtable的加锁&#xff0c;就是直接给put&#xff0c;get等方法加上synch…