springboot基础

news/2024/11/24 18:33:42/

文章目录

    • @[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

日志框架、日志配置


http://www.ppmy.cn/news/27283.html

相关文章

逆向-还原代码之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…

双指针 (C/C++)

1. 双指针 双指针算法的核心思想&#xff1a;将暴力解法的时间复杂度&#xff0c;通常是O(N*N)&#xff0c;通过某种特殊的性质优化到O(N)。 做题思路&#xff1a;先想想暴力解法的思路&#xff0c;然后分析这道题的特殊性质&#xff0c;一般是单调性。然后得出双指针算法的思路…

机器学习聚类分析建模方法大全

最近很多私信都在问机器学习的问题&#xff0c;感觉很多都是刚入门的新手&#xff0c;有些概念和问题也相对比较基础&#xff0c;空余时间里我在不断整理一些常用的基础算法模型&#xff0c;写成文章后面有需要的话可以直接阅读即可&#xff0c;有些问题可能直接就迎刃而解了吧…

国内知名插画培训机构有哪些,学习插画怎么选培训班

国内知名插画培训机构有哪些&#xff1f;给大家梳理了国内5家专业的插画师培训班&#xff0c;最新无大插画班排行榜&#xff0c;各有优势和特色&#xff01; 一&#xff1a;国内知名插画培训机构排名 1、轻微课&#xff08;五颗星&#xff09; 主打课程有日系插画、游戏原画…

初识MySQL下载与安装【快速掌握知识点】

目录 前言 MySQL版本 MySQL类型 MySQL官网有.zip和.msi两种安装形式&#xff1b; MySQL 下载 1、MySQL 属于 Oracle 旗下产品&#xff0c;进入Oracle官网下载 2、点击产品&#xff0c;找到MySQL 3、进入MySQL页面 4、点击Download&#xff08;下载&#xff09;&#x…

关于Kubernetes不兼容Docker

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129153459 参考文献&#xff1a;https://www.cnblogs.com/1234roro/p/16892031.html 一、总结 总结起来就是一句话&#xff1a; k8s只是弃用了dockershim&#xff0c;并不是弃用了整个Docker&#xf…

基于SpringBoot的外卖项目(详细开发过程)

基于SpringBootMyBatisPlus的外卖项目1、软件开发整体介绍软件开发流程角色分工2、外卖项目介绍项目介绍产品展示后台系统管理移动端技术选型功能结构角色3、开发环境的搭建开发环境说明建库建表Maven项目搭建项目的目录结构pom.xmlapplication.ymlReggieApplication启动类配置…

whistle+SwitchyOmega配置代理解决白名单跨越

文章目录whistleSwitchyOmega配置代理什么是whistle什么是SwitchyOmega示例&#xff1a;作用为什么不直接使用SwitchyOmega代理whistleSwitchyOmega配置代理 什么是whistle whistle主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应&#xff0c;也可以作为HTTP代理服务器…