2、SpringBoot2之入门案例
2.1、创建Maven工程
2.1.1、创建空项目
2.1.2、设置项目名称和路径
2.1.3、设置项目sdk
2.1.4、项目初始状态
注意:需要关闭项目再重新打开,才能看到SpringBoot-Part文件夹
2.1.5、配置maven
2.1.6、创建module
右击SpringBoot-Part文件夹,创建新module
选择maven
配置module名称和路径
module初始状态
3、引入依赖
3.1、添加父工程
<!--
Spring Boot提供了一个名为spring-boot-starter-parent的工程;
该工程对各种常用依赖的版本进行了管理;
只需要以该工程为父工程,就不用再操心依赖的版本问题了;
以后需要用到什么依赖,直接引入坐标(不需要添加版本)即可。
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
</parent>
3.2、添加web启动器
<dependencies>
<!--
为了让Spring Boot完成各种自动配置,必须引入Spring Boot提供的自动配置依赖,称为启动器;
因为是web项目,所以这里引入web启动器。
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4、创建启动类
package online.liaojy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author liaojy
* @date 2023/12/10 - 21:01
*/
// @SpringBootApplication 注解标识的类,为Spring Boot应用程序的启动类
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
/*
* 该方法是启动 Spring Boot 应用程序的关键步骤,
* 它会创建应用程序上下文、创建ioc容器、自动配置及启动应用程序(web项目会启动内置的Tomcat),并处理命令行参数。
* */
SpringApplication.run(MainApplication.class,args);
}
}
5、创建控制器
在SpringBoot启动类所在的包以及子包下,IOC和DI的注解会被自动扫描并生效,约定俗成、无需额外的配置指定。
package online.liaojy.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author liaojy
* @date 2023/12/10 - 21:22
*/
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello,springboot2!";
}
}
6、测试效果
启动springboot工程
注意:通过控制台的日志可知,默认使用了8080端口,内置了Tomcat9,上下文没有内容(也即是/)
访问对应的控制器方法,成功返回的正确响应内容。
7、案例总结
7.1、父工程
每个 springboot 工程都有一个父工程 spring-boot-starter-parent ;
spring-boot-starter-parent 的父工程是 spring-boot-dependencies
spring-boot-dependencies 工程是版本仲裁中心,把所有常见的jar的依赖版本都声明好了,而且不存在版本冲突,
所以 springboot 工程中的依赖不需要写版本。
7.2、starter启动器
虽然 Maven 有依赖传递的功能,但是只能根据 jar 包之间的引用关系来关联依赖,不能根据开发场景来关联相关依赖,
因此 Spring Boot 提供了一种叫做 Starter 的概念,用于关联和管理具体业务场景的相关依赖和配置;
Starter 包含了一组预定义的依赖项集合,并提供了一致的依赖项版本管理,确保依赖项之间的兼容性和稳定性;
Starter 遵循“约定大于配置”的原则,通过默认的设置来自动配置所需的组件和功能,让开发者更专注于业务逻辑而不是繁琐的配置细节;
除了 Spring Boot 会提供一系列预定义的 Starter 之外,第三方(包括我们自己)也可以自定义 Starter ;
官方提供的 Starter 的命名格式:spring-boot-starter-* ,第三方提供的 Starter 的命名格式:*-spring-boot-starter 。
SpringBoot 官方提供的 Starter 的文档地址:
https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/using.html#using.build-systems.starters
7.3、@SpringBootApplication注解
添加在启动类上的 @SpringBootApplication 注解,实际上是一个组合注解,其作用由具体的子注解来实现;
@SpringBootApplication 注解的关键子注解包括:@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration ;
@SpringBootConfiguration 子注解本身也是一个组合注解,它包含了 @Configuration 注解,作用是将被标识的类声明为配置类;
@EnableAutoConfiguration 子注解的作用是自动加载其他配置类,并会根据依赖项和类路径,自动配置各种常见的Spring配置和功能;
@ComponentScan 子注解的作用是扫描所在类的包及其子包中的组件,并加载进Ioc容器中,使它们可被自动注入和使用。
2、SpringBoot2之入门案例的更多相关文章
- SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口
一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容 ...
- SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)
SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 Spr ...
- SpringMvc核心流程以及入门案例的搭建
1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...
- Struts2第一个入门案例
一.如何获取Struts2,以及Struts2资源包的目录结构的了解 Struts的官方地址为http://struts.apache.org 在他的主页当中,我们可以通过左侧的Apache ...
- MyBatis入门案例、增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- Hibernate入门案例及增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Quartz应用实践入门案例二(基于java工程)
在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...
- Quartz应用实践入门案例一(基于Web环境)
Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...
- MyBatis入门案例 增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- Hibernate入门案例 增删改
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
随机推荐
- 【jetson nano】yolov5环境配置tensorrt部署加速
安装pytorch Nano上预装的Jetpack版本为4.6.1,Python为3.6.9,CUDA环境为10.2.在PyTorch for Jetson中可以下载不同版本的torch,torch& ...
- 使用C代码实现读取文件中的hex字符串,转换为字节数组
举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...
- 白话理解和使用DOCKER VOLUME
Docker使用Volume来管理宿主机和容器内数据的映射 什么是数据卷(Volume)Docker镜像被存储在一系列的只读层中.当我们创建一个容器时,Docker会读取镜像(只读),并在其顶部添加 ...
- 如何基于Perl实现批量蛋白名转换为基因名?以做后续GO与KEGG分析
众所周知,在完成蛋白组学组间差异蛋白筛选后,往往要做GO与KEGG功能富集分析,这就需要我们首先将蛋白名转换为基因名,或者找出基因ID.将蛋白名转化为基因名可能涉及不同的转换工具或数据库,这里有几种常 ...
- 开源一款功能强大的 .NET 消息队列通讯模型框架 Maomi.MQ
目录 文档说明 导读 快速开始 消息发布者 IMessagePublisher 连接池 消息过期 事务 发送方确认模式 独占模式 消费者 消费者模式 事件模式 分组 消费者模式 消费.重试和补偿 消费 ...
- 父类和子类对象的获取值的方式验证,通过父类属性的方式获取不到值,需要使用get方法
父类和子类对象的获取值的方式验证,通过父类属性的方式获取不到值,需要使用get方法 静态属性通过类.属性的方式获取,对象获取使用get方法获取 package com.example.core.myd ...
- 记一次 MatPlotLib 报错及解决方案:AttributeError: module 'matplotlib.cbook' has no attribute '_Stack'
记一次 MatPlotLib 报错及解决方案 目录 记一次 MatPlotLib 报错及解决方案 解决方法 具体发生了什么 报错 log 1 内容 报错 log 2 内容 最近出现 MatPlotLi ...
- 【iOS】自定义CALayer可能会出现没有动画过程但有动画结果的解析
按照计划是要做成这样的动画 可是结果变成了这样 (有时候最重要的不是结果而是过程,日常鸡汤) 结果没有问题说明delegate中- (void)animationDidStop:(CAAnimatio ...
- 我又学会了使用Range实现网络文件下载的断点续传
目录 前言 1.Range请求头 1.1.概述 1.2.使用限制 1.3.范围请求 1.4.预防资源变更 2.断点续传下载实现 2.1.流程设计 2.2.代码实现 2.3.运行结果 3.RandomA ...
- 安卓Camera-HAL显示值与比例
安卓Camera-HAL显示值与比例 参考:https://blog.csdn.net/wang714818/article/details/78049649?utm_source=blogxgwz4 ...