SpringBoot 之基础(一)

文章目录

  • SpringBoot 基础
    • 基本概念
    • 创建 SpringBoot 项目
    • 编码
      • 编写启动类
      • 写 Controller
      • 运行 / 测试
      • properties 和 yml
      • 关闭 Spring banner
      • 日志
      • spring-boot 默认的日志格式
    • 解决 start.spring.io 不能访问
    • 不使用 spring boot 的 parent pom

SpringBoot 基础

Spring Boot 是由 Pivotal 团队提供的基于 Spring 的全新框架,其设计目的是为了简化 Spring 应用的搭建和开发过程。该框架遵循"约定大于配置"原则,采用特定的方式进行配置,从而使开发者无需定义大量的 XML 配置。

Spring Boot 并不重复造轮子,而且在原有 Spring 的框架基础上封装了一层,并且它集成了一些类库(提供了默认的配置),用于简化开发。

简而言之,Spring Boot 就是一个大容器,其中包含了很多类库的默认配置,你只需要在项目中引入这些类库即可使用。

基本概念

Spring Boot 是 Spring 项目中的一个子工程,推崇约定大于配置的方式以便于你能够尽可能快速的启动并运行程序。

由于 Spring Boot 使用一些固定的方式来构建生产级别的 spring 应用,所有人们把 SpringBoot 称为搭建程序的『脚手架』。

SpringBoot 简化了基于 Spring 的应用开发,只需要 run 就能创建一个独立的、生产级别的 Spring 应用。

SpringBoot 为 Spring 平台及第三方库提供开箱即用的设置(提供默认设置,存放默认配置的包就是启动器),这样我们就可以简单的开始。多数 SpringBoot 应用只需要很少的 Spring 配置。

我们可以使用 SpringBoot 创建 java 应用,并使用 java –jar xxx.jar 启动它,就能得到一个生产级别的 web 工程。

SpringBoot 主要特点和目标是:

  • 为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验

  • 开箱即用(启动器 starter-* 其实就是 Spring Boot 提供的一个 jar 包),但通过自己设置参数.properties.yml,即可快速摆脱这种方式。

  • 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等

  • 绝对没有代码生成,也无需 XML 配置。

创建 SpringBoot 项目

创建一个 Maven 项目,但是『不用』勾选 Create from archetype截止目前为止,该项目与 SpringBoot 还没有任何关系。

Spring Boot 提供了一个名为 spring-boot-starter-parent 的工程,里面已经对各种常用依赖(并非全部)的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标即可!

  • 添加父工程坐标:

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.11.RELEASE</version>
    </parent>
    
  • 添加 web 启动器:

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

需要注意的是,我们并没有在这里指定版本信息。因为 Spring Boot 的父工程已经对版本进行了管理了。

springboot_1

这些都是 Spring Boot 根据 spring-boot-starter-web 这个依赖自动引入的,而且所有的版本都已经管理好,不会出现冲突。

  • 完整 pom 如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.11.RELEASE</version></parent><groupId>tuyinhu.gitee.io</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
    </project>
    

有时候,你不想,甚至是不能使用使用 spring-boot-starter-parent 作为你的父项目。例如,在父子模块项目中,你本身就有自己的父亲。这种情况下,你需要使用别的方式来使用 spring boot。见最后。

编码

编写启动类

SpringBoot 项目通过 main 函数即可启动,我们需要创建一个启动类:

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(SpringbootDemo1Application.class, args);}
}

写 Controller

接下来的编码工作,就是正常的 Spring MVC 项目的开发过程。

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

运行 / 测试

运行启动类的 main 方法,会在控制台中看见日志信息,其中有一条信息如下:

Tomcat started on port(s): 8080 (http) with context path ''
  1. 监听的端口是 8080

  2. Spring MVC 的映射路径是:/

  3. /hello 路径已经映射到了 HelloController 中的 hello() 方法

打开页面访问:http://localhost:8080/hello

properties 和 yml

Spring Boot 整个应用程序只有一个配置文件,那就是 .properties.yml 文件。如果你的 Spring Boot 项目中没有包含这个配置文件,Spring Boot 对每个配置项都有默认值(当然,我们也可以添加配置文件,用以覆盖其默认值)。

这里以 .properties 文件为例,首先在 resources 下新建一个名为 applicatioon.properties的文件。

输入内容为:

server.port=8081
server.servlet.context-path=/api

并且启动 main 方法,这时程序请求地址则变成了:http://localhost:8081/api/hello

Spring Boot 支持 .properties 和 .yml 两种格式的文件,文件名分别对应 application.propertiesapplication.yml

下面贴出 yaml 文件格式供大家参考:

server:port: 8080servlet:context-path: /api

可以看出 yml 则 换行 + tab 隔开。这里需要注意的是冒号后面 必须有空格 ,否则会报错。

关闭 Spring banner

spring.main.banner-mode=off

日志

Spring Boot 直接使用 slf4j ,默认间接使用 logback 日志,因此,它支持直接在 .properties.yml 文件中对日志的相关信息进行配置。

另外,Spring Boot 还支持控制台日志上色功能。

logging.level.root=INFO
logging.level.xxx.yyy.zzz=DEBUG
logging.pattern.console=%clr(%5level) \%clr(|){faint} \%clr(%-40.40logger{39}){cyan} \%clr(:){faint} \%m%n

有一点需要注意,如果是 .yml 文件格式,在设置 logging.pattern.console 时,其值必须用双引号括起来,形如:console="..."

spring-boot 默认的日志格式

了解

spring-boot.jar
└── org.springframework.boot.logging└── defaults.xml

其中有一段日志的格式配置(格式化后显示如下):

<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-
%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} 
%clr(${LOG_LEVEL_PATTERN:-%5p}) 
%clr(${PID:- }){magenta} 
%clr(---){faint} 
%clr([%15.15t]){faint} 
%clr(%-40.40logger{39}){cyan} 
%clr(:){faint} %m%n
${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

其中单词 blue、cyan、faint、green、magenta、red、yellow,表示颜色。

解决 start.spring.io 不能访问

使用阿里云国服链接替代:https://start.aliyun.com

不使用 spring boot 的 parent pom

这种情况下,你可以在你自己的 parent 项目中加入如下东西(通过 spring-boot-dependencies 使用 scope=import 依赖项来保持依赖项管理)

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- 在未来,spring cloud 遇到这种情况时,也是如此处理。<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency>--></dependencies>
</dependencyManagement>

这样,你的子项目中就不再需要编写版本号了。

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

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

相关文章

梳理清楚的echarts地图下钻和标点信息组件

效果图 说明 默认数据没有就是全国地图&#xff0c; $bus.off("onresize")是地图容器变化刷新地图适配的&#xff0c;可以你们自己写 getEchartsFontSize是适配字体大小的&#xff0c;getEchartsFontSize(0.12) 12 mapScatter是base64图片就是图上那个标点的底图 Ge…

2024年5月最新高德poi数据采集科普

曾几何时&#xff0c;个人注册高德开发者即可拥有每日一万次免费配额调用&#xff0c;现如今&#xff0c;个人每日只能调用100次&#xff0c;即使额外购买了配额300元/10万次&#xff0c;也会因为短时间大量采集被封号。要想稳定采集&#xff0c;恐怕只有购买商业授权5万/年&am…

kafka的安装与简单使用

下载地址&#xff1a;Apache Kafka 1. 上传并解压安装包 tar -zxvf kafka_2.13-3.6.2.tgz 修改文件名&#xff1a;mv kafka_2.13-3.6.2 kafka 2. 配置环境变量 sudo vim /etc/profile #配置kafka环境变量 export KAFKA_HOME/export/server/kafka export PATH$PATH:$KAFKA…

【Vue】v-if / v-show条件渲染指令

条件判断指令&#xff0c;用来辅助开发者按需控制 DOM 的显示与隐藏。条件渲染指令有如下两个&#xff0c;分别是&#xff1a; v-show 作用&#xff1a; 控制元素显示隐藏&#xff08;简单的显示隐藏&#xff09; 语法&#xff1a; v-show "表达式" 表达式值为 tru…

如何评价GPT-4o?

GPT-4o&#xff1a;开启全新理解与生成语言的篇章 在近年来的AI发展中&#xff0c;GPT模型赫然矗立&#xff0c;在自然语言处理任务中刷新了人们的认知&#xff0c;一路从GPT-1演进到如今的GPT-4o。 从GPT-1到GPT-4&#xff0c;我们可以看到模型的层数和参数量在持续增长&…

解密网络流量监控:优化IT运维的利器

引言&#xff1a; 在当今数字化时代&#xff0c;网络流量监控是维护网络稳定与业务连续性的关键。作为一名资深网络工程师&#xff0c;我将分享一些关于网络流量监控的重要知识&#xff0c;并探讨如何在IT运维中运用这一工具优化网络性能&#xff0c;确保业务的顺畅进行。 1. 网…

基于Patroni+etcd+流复制搭建PostgreSQL高可用——筑梦之路

Patroni方案简介 Patroni是一个基于zk、etcd、consul等的pg ha模板&#xff0c;可以使用python来创建和定制高可用性解决方案。Patroni使用分布式key-value数据库作为数据存储&#xff0c;主节点故障时进行主节点重新选举。通过PG内置的流复制&#xff0c;支持同步和异步复制。…

k210数字识别 笔记2 (串口通信)

这个模型识别的还可以&#xff0c;离近点 识别率高达0.9 资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1D4ubJGMptqop1x_Nf8KqfQ?pwd1234 提取码&#xff1a;1234 一&#xff1a;报错解决 报错的意思应该是模型文件错误 原程序可以在sd卡运行&#xff0c;但…

Linux 服务器配置 SSH 服务登录失败处理

任务目标 配置 Linux 服务器ssh远程登录失败处理机制&#xff0c;防止黑客爆破服务器密码 操作步骤 备份原配置文件 $ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak安装 pam_tally2 统计登陆失败次数 # 对于Debia…

[C#]使用C#部署yolov8-cls的图像分类的tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll&#xff0c;TensorRtExtern源码地址&#xff1a;TensorRT-CShar…

游泳时用什么耳机听歌好?精品榜前四游泳耳机揭秘,款款佳品!

游泳时用什么耳机听歌好&#xff1f;这无疑是众多水上运动爱好者的共同疑问。在享受游泳带来的清凉与畅快时&#xff0c;若能伴随着悦耳的音乐&#xff0c;无疑能让整个体验更加完美。然而&#xff0c;市面上的游泳耳机种类繁多&#xff0c;品质各异&#xff0c;如何选择一款既…

1、pyton环境的安装-windows系统下

python官网 https://www.python.org/ 点击黄色的按钮&#xff0c;下载完成&#xff0c;如下&#xff1a; 双击安装&#xff0c;我现在以3.10.4版本进行安装说明&#xff1a; 一定要勾选上下边的to path&#xff0c;然后选择自定义安装 全选&#xff0c;点击next 选择要安装的路…

PHPSTOM配置Laradock,xdebug,phpunit

原理图&#xff1a; 片面理解&#xff1a; phpstorm启用一个9000端口&#xff0c;这个端口用来接收到信息后&#xff0c;启用xdebug功能。服务器端(docker), 当客户端访问laravel项目域名后, 并读取xdebug.ini的配置, 把调试的请求数据, 向配置里面的端口发送消息, 配置里面的端…

OrangePi Alpro开箱体验 ubuntu 与 openEuler 实时性对比

OrangePi Alpro开箱体验 & ubuntu 与 openEuler 实时性对比 1 介绍1.1 概述1.2 OrangePi Kunpeng Pro vs OrangePi AIpro 2 开箱3 芯片介绍OrangePi AIpro(8T)Atlas 200I DK A2 4 开机连接鼠标、键盘、显示器桌面查看系统信息配置网络查看IP远程SSHWinSCP 5 GPIO Toolgpio_…

medsam ,数入xml +img, 根据检测框,原图显示分割效果,加上点的减少处理

1、输入每张图片的多个检测框&#xff0c;得到这张图片的sam 分割结果 import numpy as np import matplotlib.pyplot as plt import osjoin os.path.join import torch from segment_anything import sam_model_registry from skimage import io, transform import torch.nn…

轧钢测径仪分析软件,四大图表带来产线新视角!

轧钢测径仪是智能化检测设备&#xff0c;除了测径仪主体外&#xff0c;还配有测控软件系统&#xff0c;从这里可对测径仪进行各种设置&#xff0c;亦可从此观测到测径仪获得的各种信息&#xff0c;如检测信息、分析图表、计算尺寸、历史数据等。而从测径仪获得的图表信息主要有…

伦敦银和现货白银是一回事吗

伦敦银和现货白银不能直接完全地画上等号&#xff0c;但如果投资者所指指的是国际市场上的现货白银交易&#xff0c;那么二者应该是等同的——因为在国际贵金属投资市场上&#xff0c;现货白银的别称就是伦敦银&#xff0c;伦敦银和现货白银指的其实是同一回事。 因为早在很多个…

ES报错1

ES在kibana的JSON如图: 提交后错误信息如下 所以是什么错误呢: 原来是:json的格式有误改成 这里的错误其实是我在文件传输时,为了节约空间,没有以json格式传递,而是一串字符就传过来了,需要使用josn的格式化工具格式化才行,结果格式化的不正确,才遇到此坑

图片处理软件有哪些?这三款软件好用

图片处理软件有哪些&#xff1f;在当今这个数字化时代&#xff0c;图片处理软件成为了我们日常生活和工作中不可或缺的工具。无论是为了修饰个人照片&#xff0c;还是为了设计专业海报&#xff0c;这些软件都能帮助我们轻松实现创意和美化。那么&#xff0c;究竟有哪些热门的图…

【因果推断python】1_因果关系初步1

目录 为什么需要关心因果关系&#xff1f; 回答不同类型的问题 当关联确实是因果时 为什么需要关心因果关系&#xff1f; 首先&#xff0c;您可能想知道&#xff1a;它对我有什么好处&#xff1f;下面的文字就将围绕“它”展开&#xff1a; 回答不同类型的问题 机器学习目…