Spring Boot 初始(快速搭建 Spring Boot 应用环境)

提示:
① 通过下面的简介可以快速的搭建一个可以运行的 Spring Boot 应用(估计也就2分钟吧),可以简单的了解运行的过程。
② 建议还是有一点 Spring 和 SpringMVC的基础(其实搭建一个 Spring Boot 环境不需要也没有关系)

Spring Boot 初始(快速搭建 Spring Boot 应用环境)

  • 一、脚手架
    • 1.脚手架网址
    • 2.使用脚手架创建项目
  • 二、目录结构
  • 三、编写简单的代码运行
  • 四、运行 Spring Boot 项目的方式
  • 五、Spring Boot 初始的知识
    • 1.starter
    • 2.Spring-boot-starter-parent
    • 3.核心注解 — @SpringBootApplication
  • 六、总结


一、脚手架

  • 脚手架是一种用在建筑领域的辅助工具,是为了保证建筑施工过程顺利进行而搭设的工作平台。软件工程中的脚手架是用来快速搭建一个小的可用的应用程序的骨架,将开发过程要用到的工具、环境都配置好,同时生成必要的模板代码。
  • 脚手架是辅助创建程序的工具,Spring Initializr 是创建 Spring Boot 项目的脚手架。快速建立一个 Spring Boot 应用的最好方式。它是一个 Web 应用,能够在浏览器中使用。IDEA 中继承了此工具,用来快速创建 Spring Boot 项目以及 Spring Cloud 项目。

1.脚手架网址

  • Spring Initializr 脚手架的网址:https://start.spring.io/
  • 阿里云脚手架的网址:https://start.aliyun.com/

2.使用脚手架创建项目

  • 浏览器访问脚手架,创建项目。
    在这里插入图片描述

  • IDEA 中使用脚手架。
    在这里插入图片描述
    在这里插入图片描述


二、目录结构

在这里插入图片描述


三、编写简单的代码运行

  • 在 controller 包中创建 HelloController.java 类如下:
    在这里插入图片描述
  • 在 Application.java 类中添加如下代码:
    在这里插入图片描述

四、运行 Spring Boot 项目的方式

  • 开发工具,例如 IDEA 执行 main 方法。
  • Maven 插件 mvn spring-boot:run。
  • java-jar jar 文件的路径。
    在这里插入图片描述
  • 注意:
    • Spring Boot 项目可以打包为 jar 或 war 文件。因为 Spring Boot 内嵌了 web 服务器,例如 tomcat。能够以 jar 方式运行 web 应用。无需安装 tomcat 程序。
  • 普通的 jar 和 Spring Boot jar 的区别:
项目Spring Boot jar普通的 jar
目录Boot-INF:应用的class和依赖jar;META-INF:清单;org.springframework.boot.loader:spring-boot-loader模块中的所有类META-INF:清单;class 的文件:jar 中的所有类
BOOT-INFclass:应用的类;lib:应用的依赖没有BOOT-INF
spring-boot-start执行 jar 的 spring boot 类没有这部分
可执行yesno

五、Spring Boot 初始的知识

1.starter

  • 带有 starter 单词的叫做启动器(启动依赖)
    • spring-boot-starter-xxxx : 是 spring 官方推出的启动器。
    • xxx-starter : 非官方推出的,由其他组织提供的。
  • starter 是一组依赖,应用中包含 starter,可以获取 spring 相关技术的一站式的依赖和版本。不必复制、粘贴代码。通过 starter 可以快速启动并运行项目。
  • starter 包含:
    • 依赖坐标、版本
    • 传递依赖的坐标、版本
    • 配置类,配置项
<dependencies>
		<!--
			Spring Web 依赖
			带有 starter 单词的叫做启动器(启动依赖)。
			spring-boot-starter-xxxx : 是 spring 官方推出的启动器。
			xxx-starter : 非官方推出的,由其他组织提供的。
		-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

2.Spring-boot-starter-parent

  • pom.xml 中 指定 spring-boot-starter-parent 作为坐标,表示继承 Spring Boot 提供的父项目。从 spring-boot-starter-parent 继承以获得合理的默认值和完整的依赖树,以便快速建立一个 Spring Boot 项目。父项目提供以下功能:
    • JDK 的基准版本,比如 <java.version>17</java.version>
    • 源码使用 UTF-8 编码格式
    • 公共依赖的版本。
    • 自动化的资源过滤:默认把 src/main/resources 目录下的文件进行资源打包。
    • maven 的占位符 ‘@’
    • 对多个 Maven 插件做了默认配置,如 maven-compile-plugin,maven-jar-plugin
  • 使用父项目的两种方式:
    • 在项目中,继承 spring-boot-starter-parent
    <!-- 表示父项目-->
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>3.2.2</version>
    	<relativePath/> <!-- lookup parent from repository -->
    </parent>
    
  • pom.xml 不继承,单独加入spring-boot-dependencies依赖
    	<dependencyManagement>
    		<dependencies>
    			<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-dependencies</artifactId>
    			<version>3.1.1</version>
    			<type>pom</type>
    			<scope>import</scope>
    		</dependency>
    	</dependencies>
    </dependencyManagement>
    

3.核心注解 — @SpringBootApplication

package com.gdb.crm;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import java.util.Date;

/**
 * 核心注解功能
 * ① @SpringBootConfiguration:包含@Configuration注解的功能
 * 		@Configuration:Java Config 的功能,配置类,结合@Bean能够将对象注入到spring的IOC容器
 * 		@SpringBootConfiguration标注的类是配置类,Application是配置类
 *
 * ② @EnableAutoConfiguration:开启自动配置。将spring和第三方库中的对象创建好,注入到spring容器,避免写XML,去掉样例代码。需要使用的对象,由框架提供
 *
 * ③ @ComponentScan:组件扫描器。<context:component-scan base-package="xxxx包"/>
 * 		扫描@Controller,@Service,@Repository,@Component注解,创建它们的对象注入到容器。
 * 		springBoot约定:启动类,作为扫描包的根(起点),@ComponentScan从项目的根开始扫描(包括它的子包中的类)
 * 		所以默认将 Application 启动类放在根包的下面。
 * 总结:在入口做的事情是,将上面的三类对象放入到 spring 的 IOC 容器中。
 */
@SpringBootApplication
public class Application {
	@Bean
	public Date myDate(){
		return new Date();
	}

	public static void main(String[] args) {
		//run方法的第一个参数是 源(配置类),从这里加载 bean,找到 bean 注入到 spring 的容器中。
		SpringApplication.run(Application.class, args);
	}

}


六、总结

  • 创建一个可运行的 Spring Boot 应用的步骤。
    1. 使用脚手架搭建项目环境。
    2. 建立项目的目录结构。
    3. 编写简单的代码运行即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++多线程_std::future与std::promise

目录 1. 引言 2. promise/future的含义 std::future std::promise std::packaged_task std::async 处理异常 std::shared_future 实战&#xff1a;多线程实现快速排序 时钟与限定等待时间 参考: 1. 引言 在并发编程中&#xff0c;我们通常会用到一组非阻塞的模型&a…

共享wifi项目到底能不能做?

如今&#xff0c;互联网已经渗透到我们生活的方方面面&#xff0c;人们对WiFi的需求越来越大&#xff0c;已经成为人们不可或缺的一部分。在这样的背景下&#xff0c;共享WiFi项目应运而生&#xff0c;作为近年来兴起的创业选择&#xff0c;成为了越来越多创业者追逐的热门项目…

Servlet 与 MVC

主要内容 Servlet 重点 MVC 重点 Filter 重点 章节目标 掌握 Servlet 的作用 掌握 Servlet 的生命周期 掌握 JSP 的本质 掌握 MVC 的设计思想 掌握 Filter 的作用及使用场景 第一节 Servlet 1. Servlet 概念 Servlet 是在服务器上运行的能够对客户端请求进行处理&a…

微信小程序(八)图片的设定

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.图片的三种常见缩放形式 2.图片全屏预览 源码&#xff1a; testImg.wxml <!-- 默认状态&#xff0c;不保证缩放比&#xff0c;完全拉伸填满容器 --> <image class"pic" mode"scaleTo…

Backtrader 文档学习-Target Orders

Backtrader 文档学习-Target Orders 1. 概述 sizer不能决定操作是买还是卖&#xff0c;意味着需要一个新的概念&#xff0c;通过增加小智能层可以决定买卖&#xff0c;即通过持仓份额可以决定买卖操作。 这就是策略中order_target_xxx方法族的作用。受zipline的方法的启发&am…

商城系统中30分钟未付款自动取消订单怎么实现(简单几种方法)

实现以上功能 方法1&#xff1a;定时任务批量执行 写一个定时任务&#xff0c;每隔 30分钟执行一次&#xff0c;列出所有超出时间范围得订单id的列表 AsyncScheduled(cron "20 20 1 * * ?")public void cancelOrder(){log.info("【取消订单任务开始】"…

Excel导出警告:文件格式和拓展名不匹配

原因描述&#xff1a; Content-Type 原因&#xff1a;Content-Type&#xff0c;即内容类型&#xff0c;一般是指网页中存在的Content-Type&#xff0c;用于定义网络文件的类型和网页的编码&#xff0c;决定文件接收方将以什么形式、什么编码读取这个文件&#xff0c;这就是经常…

【算法专题】动态规划之路径问题

动态规划2.0 动态规划 - - - 路径问题1. 不同路径2. 不同路径Ⅱ3. 珠宝的最高价值4. 下降路径最小和5. 最小路径和6. 地下城游戏 动态规划 - - - 路径问题 1. 不同路径 题目链接 -> Leetcode -62.不同路径 Leetcode -62.不同路径 题目&#xff1a;一个机器人位于一个 m …

linux安装docker--更具官网教程

1.访问https://docs.docker.com/ 2.进入download 3输入cento 或者直接访问地址Install Docker Engine on CentOS | Docker Docs 4一步一步根据官网命令走 2安装 常见报错&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.rep…

node.js旅游景点分享网站03796-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。旅游景点分享网站设计&#xff0c;主要的模块包括查看后台首页、轮播图&#xff08;轮播图管理&#xff09;、网站公告管理&#xff08;网站公告…

幻兽帕鲁安装和开服教学

《幻兽帕鲁》游戏热度异常火爆&#xff0c;很多玩家想下载《幻兽帕鲁》和朋友玩&#xff0c;但不知道在哪里能够下载到&#xff0c;下面请看《幻兽帕鲁》下载安装教学&#xff0c;希望能够帮助大家。 幻兽帕鲁》目前仅在PC上的Steam平台发售&#xff0c;可以登录Steam搜索“幻…

Dify学习笔记-基础介绍(一)

1、简介 Dify AI是一款强大的LLMOps&#xff08;Language Model Operations&#xff09;平台&#xff0c;专为用户提供便捷的人工智能应用程序开发体验。 该平台支持GPT系列模型和其他模型&#xff0c;适用于各种团队&#xff0c;无论是用于内部还是外部的AI应用程序开发。 它…

【java问题解决】-word转pdf踩坑

问题情境&#xff1a; 项目中采用word转pdf&#xff0c;最开始使用的pdf相关的apache的pdfbox和itextpdf&#xff0c;后面发现对于有图片背景的word转pdf的情景&#xff0c;word中的背景图会直接占用位置&#xff0c;导致正文不会正确落在背景图上。 解决方案&#xff1a; 采…

力扣日记1.23-【回溯算法篇】17. 电话号码的字母组合

力扣日记&#xff1a;【回溯算法篇】17. 电话号码的字母组合 日期&#xff1a;2023.1.23 参考&#xff1a;代码随想录、力扣 17. 电话号码的字母组合 题目描述 难度&#xff1a;中等 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意…

flink-java使用介绍,flink,java,DataStream API,DataSet API,ETL,设置 jobname

1、环境准备 文档&#xff1a;https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/ 仓库&#xff1a;https://github.com/apache/flink 下载&#xff1a;https://flink.apache.org/zh/downloads/ 下载指定版本&#xff1a;https://archive.apache.org/dist/flink…

洛谷C++简单练习day4

day4---进制转化---1.22 习题概述 题目描述 今天小明学会了进制转换&#xff0c;比如&#xff08;10101&#xff09;2 &#xff0c;那么它的十进制表示的式子就是 : 1*2^40*2^31*2^20*2^11*2^0&#xff0c; 那么请你编程实现&#xff0c;将一个M进制的数N转换成十进制表示…

VSCode Debug 参数设置说明

如果想在vscode中debug一个项目&#xff0c;比如python3 run.py --args 这个时候你需要着重关注几个参数&#xff0c;参数用两个双引号分开&#xff0c;不能有空格。 cwd :运行代码的基础目录env: 设置环境变量 PYTHONPATH&#xff1a; 设置项目用到的模块搜索路径&#xff…

开源模型应用落地-KnowLM模型小试-入门篇(一)

一、前言 你是否了解知识图谱&#xff1f;如果了解&#xff0c;你们的业务场景是否应用了知识图谱&#xff1f;实际上&#xff0c;知识图谱在各行各业都被广泛使用。例如&#xff0c;在搜索引擎优化方面&#xff0c;通过利用知识图谱&#xff0c;搜索引擎可以更好地理解网页内容…

【英文干货】【Word_Search】找单词游戏(第3天)

本期主题&#xff1a;Doors&#xff08;各式各样的门&#xff09; 本期单词&#xff1a; Automatic (Door) 自动门 Back (Door) 后门 Barn (Door) 谷仓的门 Battened (Door) 用木条加固的门 Fire (Door) 防火门 Front (Door) 前门 Garage (Door) 车库的门 Glazed (Door…

大数据学习之Flink算子、了解(Transformation)转换算子(基础篇三)

Transformation转换算子&#xff08;基础篇三&#xff09; 目录 Transformation转换算子&#xff08;基础篇三&#xff09; 三、转换算子&#xff08;Transformation&#xff09; 1.基本转换算子 1.1 映射&#xff08;Map&#xff09; 1.2 过滤&#xff08;filter&#xf…