当前位置: 首页 > news >正文

springboot基础

文章目录

    • @[toc]
      • SpringBoot概述
          • spring springmvc springboot的关系
          • Spring Boot
            • 简介
            • 微服务
            • springboot的优点
            • 核心功能
      • SpringBoot搭建
          • 使用IDEA快速搭建 Spring Boot项目
          • 入门案例研究
            • 项目结构
            • pom 文件
            • 主程序类,主入口类
          • 配置文件、加载顺序
            • 开启配置文件注释
            • 配置文件和加载顺序
      • 日志框架、日志配置
      • 日志框架、日志配置

SpringBoot概述

spring springmvc springboot的关系
  • spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。
  • spring mvc 是只是spring 处理web层请求的一个模块。

因此他们的关系大概就是这样:
spring mvc < spring < springboot

Spring Boot

Spring Boot对Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期

Spring 的缺点:配置繁重

简介
  • 简化spring应用开发的框架
  • 整个spring技术栈的整合
  • J2EE 一站式解决方案
微服务
  • 单体服务(all in one
    • 一个项目包含所有功能的应用程序
  • 微服务
    • 微服务是一种系统架构的设计风格,主旨是将原本复杂的系统拆分成多个独立的小型服务,每个服务维护自身的业务逻辑、数据处理和部署,服务与服务之间通过简单的通信协议进行通信 (比如留下的 restful API),不要求每一个微服务使用同一种变成语言编写。
    • 现代开发模式正在由单体服务转向微服务这种开发模式
    • Java 微服务框架普遍使用Spring Cloud,微服务将系统拆分成多个小型服务,它就是基于 Spring Boot做的。
springboot的优点
  • 为基于Spring的开发提供更快的入门体验
  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求
  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等
  • Spring Boot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式
核心功能
  • 起步依赖

    • 起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。

    • 简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

  • 自动配置

    • Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

SpringBoot搭建

使用IDEA快速搭建 Spring Boot项目
image-20211207221245930
  • 创建一个空项目【相当于 eclipse 里面的工作空间】
  • 项目里面添加一个 Module 选择 Spring Initializr
  • 设置 GAV 坐标和 pom 配置信息
  • 选择 版本和依赖
  • 创建完成 等待导入依赖

​ 注意:新创建的类一定要位于 …Application同级目录或者下级目录,否则 SpringBoot 加载不到。

入门案例研究
项目结构
  • static:存放静态资源 如css,js,图片等
  • templates:存放 web 页面的模板
  • application.properties、application.yml 存放依赖模块的配置信息 默认空 如 spring、springmvc、mybatis、redis等
  • .mvn|mvnw|mvnw.cmd:使用脚本操作执行 maven 相关命令,可删除
  • .gitignore:使用版本控制工具 git 的时候,设置一些忽略提交的内容,可删除
  • …Application.java:SpringBoot 程序执行的入口,执行该程序中的 main 方法
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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--该POM继承了SpringBoot 框架的一个父项目spring-boot-starter-parent,所有自己开发的 Spring Boot 都必须的继承spring-boot-starter-parent。父工程的作用是统管理Spring Boot应用里面的所有依赖版本以后我们导入依赖默认是不需要写版本
--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.1</version><relativePath/> <!-- lookup parent from repository --></parent><!--当前项目的 GAV 坐标--><groupId>com.eshop</groupId><artifactId>eshop-th</artifactId><version>0.0.1-SNAPSHOT</version><!--maven 项目名称,可以删除--><name>eshop-th</name><!--maven 项目描述,可以删除--><description>eshop-th</description><!--maven 属性配置,可以在其它地方通过${}方式进行引用--><properties><java.version>11</java.version></properties><dependencies><!-- thymeleaf模板引擎依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--SpringBoot 框架 web 项目起步依赖,通过该依赖自动关联其它依赖,不需要我们一个一个去添加jar包了。--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot 框架的测试起步依赖,例如:junit 测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatis + mysql --><!--MyBatis 整合 SpringBoot 的起步依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!--MySQL 的驱动依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies><build><!--SpringBoot 提供的打包编译等插件这个插件,可以将应用打包成一个可执行的jar包将这个应用打成jar包,直接使用java -jar的命令进行执行;--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins><resources><!-- 配置 mapper文件的路径 加载到资源 --><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>
</project>
  • 父项目:统一管理 jar 包的版本

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.1</version><relativePath/> <!-- lookup parent from repository -->
    </parent>
    直接点进去,他的父项目是:
    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.1</version>
    </parent>
    

​ 以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖还是需要声明版本号的)

  • 启动器:导入依赖的 jar 包

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    • spring-boot-starter是spring-boot启动器,spring‐boot‐starter‐web帮我们导入了web模块 正常运行所依赖的jar包;
    • Spring Boot将所有的功能都抽取出来,做成一个个的starters(启动器),只需要在项目里面 引入这些starter 相关功能的所有依赖都会导入进来。要用什么功能就导入什么功能的启动器
主程序类,主入口类
package com.eshop;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class EshopThApplication {public static void main(String[] args) {SpringApplication.run(EshopThApplication.class, args);}
}
  • @SpringBootApplication注解标注在某个类上,说明这个类是SpringBoot的主配置类, SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用;
  • 将主配置类(@SpringBootApplication标注的类)所在包及下面所有子包里面的所有组件扫描到 Spring容器
配置文件、加载顺序
开启配置文件注释
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>
配置文件和加载顺序
  • 默认的:application.properties,初始里面是空的

    • 后面的 application-dev.properties:另一个配置文件 在默认文件开启使用

    • # 服务端口
      #server.port=9091
      # 开启 dev 的这个配置文件
      spring.profiles.active=dev
      
  • yml格式的

    • 这是一种新兴的格式 注意空格 使用和上面默认的差不多 但是默认的优先级高于这个

    • spring:datasource:url: jdbc:mysql://localhost:3306/boot_crm?serverTimezone=UTCusername: rootpassword: 123driver-class-name: com.mysql.cj.jdbc.Driver
      
  • 多环境配置

    • 在主文件激活

      激活开发环境
      #spring.profiles.active=dev
      #激活生产环境
      #spring.profiles.active=product
      #激活测试环境
      spring.profiles.active=test
      
    • 其它文件的命名方式

      image-20211207225236729

日志框架、日志配置

#spring.profiles.active=product
#激活测试环境
spring.profiles.active=test
```
  • 其它文件的命名方式

    image-20211207225236729

日志框架、日志配置

相关文章:

springboot基础

文章目录[toc]SpringBoot概述spring springmvc springboot的关系Spring Boot简介微服务springboot的优点核心功能SpringBoot搭建使用IDEA快速搭建 Spring Boot项目入门案例研究项目结构pom 文件主程序类&#xff0c;主入口类配置文件、加载顺序开启配置文件注释配置文件和加载顺…...

华为OD机试真题Python实现【 时间格式化】真题+解题思路+代码(20222023)

时间格式化 题目 运维工程师采集到某产品线网运行一天产生的日志n条 现需根据日志时间先后顺序对日志进行排序 日志时间格式为H:M:S.N H表示小时(0~23) M表示分钟(0~59) S表示秒(0~59) N表示毫秒(0~999) 时间可能并没有补全 也就是说 01:01:01.001也可能表示为1:1:1.1 🔥�…...

android kotlin 协程(五) suspend与continuation

android kotlin 协程(五) suspend与continuation 通过本篇你将学会: suspendCoroutine{} suspendCancellableCoroutine{} suspend 与 continuation suspendCoroutine 第一次看到这玩意的时候肯定有点身体不适, 先不用管这个东西是什么, 目前为止 只需要知道 suspendCoro…...

JavaScript事件循环

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库一、异步执行原理1. 单线程的JavaScript我们知道&#xff0c;JavaScript是一种单线程语言&#xff0c;它主要用来与用户互动&#xff0c;以及操…...

华为OD机试真题Python实现【最少停车数】真题+解题思路+代码(20222023)

最少停车数 题目 特定大小的停车场 数组cars表示 其中1表示有车0表示没车 车辆大小不一,小车占一个车位(长度1) 货车占两个车位(长度2) 卡车占三个车位(长度3) 统计停车场最少可以停多少辆车 返回具体的数目 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Pyt…...

Python每日一练(20230223)

目录 1. 合并区间 2. 单词接龙 3. N皇后 附录&#xff1a;回溯算法 基本思想 一般步骤 1. 合并区间 难度&#xff1a;★★ 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回…...

Flask----------第一个flask项目,debug、host、port的配置

目录 1.flask 1.简介 2.flask框架的优势 2.第一个flask项目 3.debug 开启debug方法 1.专业版 2.社区版 4.修改host 5. 修改port端口 1.flask 1.简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架&#xff0c;对于Werkzeug本质是So…...

容器技术概述

容器技术概述 软件应用程序通常依赖于运行时环境提供的其他库、配置文件或服务。软件应用程序的传统运行环境是物理主机或虚拟机&#xff0c;应用程序依赖项作为主机的一部分安装。 例如&#xff0c;考虑一个 Python 应用程序&#xff0c;它需要访问实现 TLS 协议的公共共享库…...

「SAP」ABAP模块学习需要了解什么?快收下这份ABAP技术栈指南【附技能树】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计专业大二本科在读&#xff0c;阿里云社区专家博主&#xff0c;华为云社区云享专家&#xff0c;CSDN SAP应用技术领域新兴创作者。   在学习工…...

【python 基础篇 九】python的常用数据类型操作-------时间日历

目录1.python时间操作1.1 time模块1.2 calendar模块1.3 datetime模块1.python时间操作 python程序能用很多方式处理日期和时间&#xff0c;转换日期格式也是一个常见功能。 1.1 time模块 ​ 提供了处理时间和表示之间转换的功能 获取当前时间戳 概念&#xff1a;从0时区的1…...

华为OD机试真题Python实现【相同字符连续出现的最大次数】真题+解题思路+代码(20222023)

相同字符连续出现的最大次数 题目 输入一串字符串 字符串长度不超过100 查找字符串中相同字符连续出现的最大次数 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 输入只有一行,包含一个长度不超过100的字符串 输出描述 输出只…...

【Unity3D】空间和变换

1 空间 1.1 左右手坐标系及其法则 1.1.1 左右手坐标系 左手坐标系与右手坐标系Unity 局部空间、世界空间、裁剪空间、屏幕空间都采用左手坐标系&#xff0c;只有观察空间采用右手坐标系。 左右手坐标系除了坐标系朝向&#xff08;旋向性&#xff09;不同&#xff0c;还存在以…...

脑洞|ChatGPT加持下,ChatOps将如何革新团队协作与运维管理?

要说近期科技圈 “顶流”&#xff0c;非 ChatGPT 莫属。 比起目前常见的语音助手与聊天 bot&#xff0c;这位机器人显得更有 “人味儿”&#xff0c;不仅能模拟人类的语气&#xff0c;跟你聊得有来有回&#xff0c;还能写剧本、编音乐、写代码。 说到聊天工具&#xff0c;就让…...

华为OD机试真题Python实现【找数字】真题+解题思路+代码(20222023)

找数字 题目 给一个二维数组nums,对于每一个元素num[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。 例如: 输入数组nums为 0 3 5 4 2 2 5 7 8 3 2 5 4 2 4对于 num[0][0] = 0,不存在相等的值。 对于 num[0][1] = 3,存…...

【Database-01】达梦数据库Docker版下载安装

1、前往达梦数据库官网下载 https://www.dameng.com/1.1、选择数据库 - 数据库产品系 1.2、选择 达梦数据库管理系统&#xff08;DM8&#xff09; 1.3、点击试用下载 1.4、注册达梦账户 1.5、选择DM8 Docker镜像 https://www.dameng.com/list_103.html1.6、或者使用以下网址也…...

Allegro如何打开格点显示效果操作指导

Allegro如何打开格点显示效果操作指导 Allegro可以设置格点显示效果,以格点来判定走线等等是否都处于格点上,如下图 如何打开格点显示效果,具体操作如下 点击Setup点击Grids...

电子技术——反馈放大器的分析方法总结

电子技术——反馈放大器的分析方法总结 第一种也是最简单的估算方法&#xff0c;直接拿出反馈网络&#xff0c;计算 β\betaβ 则假设在 AβA\betaAβ 无限大的情况下有 Af≃1/βA_f \simeq 1/\betaAf​≃1/β 。开环法。比第一种方法更能精确的估计 AAA 和 β\betaβ 的值。系…...

微服务系统启动,环境从0开始的搭建过程

1. JDK的下载安装&#xff08;傻瓜式&#xff09; 安装过程傻瓜式&#xff0c;直接一步到位。我安装的版本为&#xff1a;jdk-17_windows-x64_bin 2. 集成开发工具的下载安装&#xff1a;IDEA&#xff08;傻瓜式&#xff09; ideaIU-2021.2.1 网上资源很多&#xff0c;自己找…...

手工测试1年经验面试,张口要13K,我真是服了····

由于朋友临时有事&#xff0c; 所以今天我代替朋友进行一次面试&#xff0c;他需要应聘一个测试工程师&#xff0c; 我以很认真负责的态度完成这个过程&#xff0c; 大概近30分钟。 主要是技术面试&#xff0c; 在近30分钟内&#xff0c; 我与被面试者是以交流学习的方式进行的…...

【保姆级】手把手捋动态代理流程(JDK+Cglib超详细源码分析)

简介动态代理&#xff0c;通俗点说就是&#xff1a;无需声明式的创建java代理类&#xff0c;而是在运行过程中生成"虚拟"的代理类&#xff0c;被ClassLoader加载。 从而避免了静态代理那样需要声明大量的代理类。上面的简介中提到了两个关键的名词&#xff1a;“静态…...

Appium自动化测试 Inspector定位Webview/H5页面元素

目录操作步骤Python操作该混合App代码Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 FQ 使用Chrome://inspect来定位元素, 环境准备相当繁琐, 不仅需要想办法FQ, 而且还需要Android设备安装Google框架以及手机版Chrome浏览器以及相应的…...

数组求和方法总结,学点干货

1.循环 &#xff08;新手用&#xff09; 1.1 普通for 循环 简单质朴 const arr [1, 2, 3, 4, 5];let sum 0;for (let i 0; i < arr.length; i) {sum arr[i];}1.2 for in 循环 与普通for循环大同小异 const arr [1, 2, 3, 4, 5];let sum 0;for (let i in arr) {sum …...

斗地主洗牌发牌-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

【案例6-4】 斗地主洗牌发牌 【案例介绍】 1.任务描述 扑克牌游戏“斗地主”&#xff0c;相信许多人都会玩&#xff0c;本案例要求编写一个斗地主的洗牌发牌程序&#xff0c;要求按照斗地主的规则完成洗牌发牌的过程。一副扑克总共有54张牌&#xff0c;牌面由花色和数字组成…...

基于antd封装的二次业务筛选组件-table-filter

文档地址&#xff1a;https://flowerofsummer.github.io/components/ 业务筛选组件 支持各种类型的高级搜索组件 基础用法 组件响应式布局&#xff0c;默认显示两行&#xff0c;可以通过 maxLineCount 配置最多显示行数每行个数&#xff1a; 如果含有 time-range&#xff0…...

逆向-还原代码之max 再画堆栈图 (Interl 64)

// source code #include <stdio.h> void max(int * a, int * b) { if (*a < *b) *a *b; } int main() { int a 5, b 6; max(&a, &b); printf("a, b max %d\n", a); return 0; } // 再画堆栈图 下周一&#xff08;2.27…...

GitHub标星30K+的Java面试八股文长啥样?

2023年的互联网行业竞争越来越严峻&#xff0c;面试也是越来越难&#xff0c;一直以来我都想整理一套完美的面试宝典&#xff0c;奈何难抽出时间&#xff0c;这套1000道的Java面试手册我整理了整整1个月&#xff0c;上传到Git上目前star数达到了30K 一、32 道 MySQL 面试题 1&…...

CVE-2022-39197 POC(CobaltStrike XSS <=4.7)漏洞复现

漏洞说明 根据9.20日CobaltStrike官方发布的最新4.7.1版本的更新日志中介绍&#xff0c;<4.7的teamserver版本存在XSS漏洞&#xff0c;从而可以造成RCE远程代码执行 一位名为“Beichendream”的独立研究人员联系我们&#xff0c;告知我们他们在团队服务器中发现的一个 XSS …...

我们来说说蹿红的AIGC到底是什么?ChatGPT又是什么?

近期&#xff0c;人工智能&#xff08;AI&#xff09;领域动作频频&#xff0c;OPENAI公司Chat GPT的出现&#xff0c;标志着人工智能的研究与应用已经进入了一个崭新的发展阶段&#xff0c;国内腾讯、阿里巴巴、百度、易网、国外微软、谷歌、苹果、IBM、Amazon&#xff0c;等互…...

新手如何从零开始搭建配置Windows云服务器?

新手如何从零开始搭建配置Windows云服务器&#xff1f;本文是搭建 Windows 云服务器入门教程&#xff0c;主要介绍如何从零开始&#xff0c;以最简单的方式搭建和配置你的Windows 云服务器。如果您之前没有搭建云服务器的经验&#xff0c;建议您按照本文介绍的方式来购买和配置…...

百趣代谢组学-抑郁症居然“男女有别”,脑膜淋巴管起关键作用!

文章标题&#xff1a;A functional role of meningeal lymphatics in sex difference of stress susceptibility in mice 发表期刊&#xff1a;Nature Communications 影响因子&#xff1a;17.694 发表时间&#xff1a;2022年8月 作者单位&#xff1a;中山大学中山医学院 …...