SpringBoot框架理解

news2024/12/27 13:20:41

1 SpringBoot入门

1.2 什么是SpringBoot

1 官网的解释

​ Spring在官方首页是这么说的:说使用SpringBoot可以构造任何东西,SpringBoot是构造所有基于Spring的应用程序的起点,SpringBoot在于通过最少的配置为你启动程序。

2 我的理解

SpringBoot是Spring开源项目的一个子项目,是Spring组件的一站式解决发案,其目的是简化Spring应用的初始搭建和开发过程。

3 SpringBoot的优缺点

其实就是变得简单,快捷,方便,我们以前自己搭建一个Spring Web项目是不是需要配置web.xml,加载Spring和SpringMvc,在配置数据库连接.配置Spring事务,日志文件,对配置文件的读取,开启注解等等一些东西,在然后启动Tomcat调试,如果还要加一些功能,还需要你自己在去搞一遍,为什么SpringBoot可以很方便的搭建一个Web项目了,不提供 Spring 框架的核心特性以及扩展功能,只用于开发新一代基于Spring框架的应用程序。

所有SpringBoot有以下优点:

1. 开发变得简单
2. 配置变得简单
3. 部署变得简单
4. 监控变得简单

复制

Spring Boot有以下缺点:

  1. 将现有的Spring Framework项目转换为Spring Boot应用程序是一个非常困难和耗时的过程。它仅适用于全新Spring项目;
  2. 集成度较高,使用过程中不太容易了解底层

4 构建项目

1 使用Spring 官方提供页面构建

1、访问 http://start.spring.io/

2、选择构建工具 Maven Project、Java、Spring Boot 版本 2.1.15、Spring Web依赖以及一些工程基本信息,可参考下图所示:

3、点击 Generate – Ctrl + 下载项目压缩包

4、解压后,使用 IDEA 导入项目

2 使用IDEA构建

  1. File -> New —> Project… 弹出新建项目的框
  2. 选择 Spring Initializr,Next 也会出现上述类似的配置界面,IDEA 帮我们做了集成。

· Group,一般填写公司域名,· Artifact,可以理解为项目的名称了,在点击next进入Dependencles部署,选择SpringBoot的版本,我一般选择的是2.6.3的版本,在点击next ![在这里插入图片描述](https://img-blog.csdnimg.cn/72ecf91fa5cd4d92ab460859374672cf.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pit5pmf,size_20,color_FFFFFF,t_70,g_se,x_16

输入项目名称和项目地址在下一步就可以了 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-23KNs0ou-1644988805926)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220216114401953.png)]

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序

3 pom包介绍

第一部分:项目描述信息
groupId,公司域名;
artifactId,项目名称;
version,项目版本号;
name,项目名称;
description,项目描述

复制

第二部分:依赖配置部分
    <parent>   配置 Spring Boot 父级版本
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>2.6.3</version>  
    <relativePath/> <!-- lookup parent from repository -->  
</parent>
    
<dependencies>  配置项目所需要的依赖包
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-web</artifactId>  
    </dependency>  
  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-test</artifactId>  
        <scope>test</scope>  
    </dependency>  
</dependencies>

复制

1.3 SpringBoot核心

1 约定优于配置

约定优于配置(Convention Over Configuration),叫作约定编程,是一种设计范式,一般用来减少开发人员做决定的数量。所以.在Spring体系中,Spring Boot jpa就是约定优于配置最佳实现之一,不需要关注表结构,我们约定类名.即是表名,属性名即,是表的字段,在做一些配置,就可以大大简化了我们的工作

2 Starter启动器

Starter可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包

3 自动配置工作原理

@SprngBoot Application 注解启动类 表示项目的的启动 @SprngBoot Application 注解启动类 标注的是SpringBoot 项目的主配置类,用于启动SpringBoot项目,SpringBoot Application里面还有三个注解分别是@EableAuconfiguration,@SpringBootConfiguration,@ComponetScan

@ComponentScan 注解表示扫描组件,以前在SSM中也使用过组件扫描,启用注解配置。启动类上间接包含该注解,表示会扫描启动类所在包及子包下的注解配置。

@SpringBootConfiguration

@SpringBootConfiguration标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名

@EableAuconfiguration

@EableAuconfiguration 注解 开启自动配置,它下面还有两个重要的注解,@AutoConfigurationPackage,@Import

@AutoConfigurationPackage 实现了自动将包放入到扫描器中

@Import注解 自动导入第三方依赖

@SpringBootApplication 完成的三件事情

1、标识当前类为主配置类。

2、自动扫描当前主配置类所在的包及其子包下的所有类。并添加一些类配置类纳入Spring容器中。

3、会自动将SpringBoot项目所需要的第三方依赖进行下载。

1.3 SpringBoot全局配置

1 全局配置文件

1、application.properties。

2、application.yml 配置文件。

在默认情况下properties比yml文件的优先级高

相同点:

可以覆盖Spring Boot自动配置的默认值

不同点:

properties的语法是key=value,比较简单。

3 application.yml 配置文件

yml是YAML语言的文件,以数据为中心,比json、xml等更适合做配置文件

yml的语法是由字母值,对象,数组,三种结构组成,并且是以空格的缩进程度来表示层级关系,空格的个数并不重要,只要左边空格对齐则视为同一个层级。注意不能用tab代替空格。且大小写敏感

注意事项: 1、字符串可以不加引号,若加双引号则输出特殊字符,若不加或加单引号则转义特殊字符; 2、数组类型,短横线后面要有空格;对象类型,冒号后面要有空格; 3、YAML是以空格缩进的程度来控制层级关系,但不能用tab键代替空格,大小写敏感; 4、如何让一个程序员崩溃?在yml文件中加几个空格

2 自定义配置文件

自定义配置文件通过,@Value获取自定义配置,自定义配置文件,@Configuration配置,导入XML配置,下面我就说下通过@Value和自定义配置文件来定义配置文件

1 通过@Value获取自定义配置

在application.properties自定义配置:

com.test.zhangsan.name=张三
com.test.nishi.name=李四

复制

在HelloController.java中通过 @Value注解获取数据:

@RestController
public class HelloController { 
   
    @Value("${com.test.zhangsan.name}")
    private String zname;
    @Value("${com.test.nishi.name}")
    private String lname;
    @Autowired
    private DemoService demoService;
    @RequestMapping("/hello")  
    public String hello() { 
     
        String msg = demoService.sayHello();  
        msg += " "+zname +" "+lname;  
        return msg;  
    }  
}

复制

2 通过 @ConfigurationProperties注解封装自定义配置

使用@ConfigurationProperties注解,需要在]pom.xml中添加依赖

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-configuration-processor</artifactId>  
    <optional>true</optional>  
</dependency>

复制

// 在com.demo.comm包下创建Testinfo.java类,并添加注解,prefix指定获取的配置信息的前缀:
@Cconfiguration
@ConfigurationProperties(prefix = "com.test")  
public class Testinfo implements Serializable { 
     
    private String zname;  
    private String lname;  
    //省略setter/getter 
}
// 在启动类上使用@EnableConfigurationProperties(Testinfo.class)
// 修改HelloController.java,注入TestInfo获取数据:
@RestController  
public class HelloController { 
     
    @Resource  
    private Testinfo Testinfo;  
    @Autowired  
    private DemoService demoService;  
    @RequestMapping("/hello")
    public String hello() { 
     
        String msg = demoService.sayHello();  
        msg += " "+Testinfo.getZname() +" "+Testinfo.getLname();  
        return msg;  
    }  
} 

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

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

相关文章

损失函数——交叉熵损失(Cross-entropy loss)

交叉熵损失&#xff08;Cross-entropy loss&#xff09;是深度学习中常用的一种损失函数&#xff0c;通常用于分类问题。它衡量了模型预测结果与实际结果之间的差距&#xff0c;是优化模型参数的关键指标之一。以下是交叉熵损失的详细介绍。 假设我们有一个分类问题&#xff0…

基于深度学习的高精度山羊检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度山羊检测识别系统可用于日常生活中或野外来检测与定位山羊目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的山羊目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

elementUI中<el-select>下拉框选项过多的页面优化方案——多列选择

效果展示(多列可以配置) 一、icon下拉框的多列选择&#xff1a; 二、常规、通用下拉框的多列选择&#xff1a; 【注】第二种常规、通用下拉框的多列选择&#xff0c;是在第一种的前端代码上删除几行代码就行&#xff08;把icon显示标签删去&#xff09;&#xff0c;所以下面着重…

陕西省养老服务人才培训基地申报条件范围、认定材料流程

今天为大家整理了陕西省养老服务人才培训基地申报条件范围、奖励措施等内容&#xff0c;感兴趣的朋友们可以了解一下&#xff01; 如果想要申报西安市、宝鸡市、铜川市、咸阳市、渭南市、延安市、汉中市、榆林市、安康市、商洛市的项目政策&#xff0c;详情见下图 目标任务 陕…

Games104现代游戏引擎学习笔记11

胶囊&#xff1a;两层。 内层&#xff1a;真正碰撞的层级 外层&#xff1a;类似保护膜&#xff0c;防止离别的东西太近&#xff0c;高速移动时卡进物体。另一个作用是防止过于贴近摄像机的进平面&#xff0c;看到墙背后的物体 朝墙移动时&#xff0c;实际往往并不是撞击&#…

Java程序设计入门教程-- switch选择语句

switch选择语句 情形 虽然if…else语句通过嵌套可以处理多分支的情况&#xff0c;但分支不宜太多&#xff0c;在Java语言中&#xff0c;提供了switch语句可以直接、高效地处理多分支选择的情况。 格式 switch &#xff08;表达式&#xff09; { case 常量表达式1&#x…

EclipseCDT远程交叉编译远程单步调试基于makefile例程(实测有效)

文章目录 前言&#xff1a;1. 新建工程2. 远程编译环境配置2.1 下载sshfs并挂载目录2.2 Debug配置2.3安装EclipseCDT的远程插件2.4 拷贝gdbserver 3. 调试总结: 前言&#xff1a; 之前写过一篇VSCode远程调试linux&#xff0c;当时是把程序以及代码通过远程的方式&#xff0c;…

pycharm内置Git操作失败的原因

文章目录 问题简介解决方案DNS缓存机制知识的自我理解 问题简介 最近在pycharm中进行代码改动递交的时候&#xff0c;总是出现了连接超时或者推送被rejected的情况&#xff0c;本以为是开了代理导致的&#xff0c;但是关闭后还是推送失败&#xff0c;于是上网查了以后&#xf…

查看MySQL服务器是否启用了SSL连接,并且查看ssl证书是否存在

文章目录 一、查看MySQL服务器是否启用了SSL连接 1.登录MySQL服务器 2.查看SSL配置 二、查看证书是否存在 前言 查看MySQL服务器是否启用了SSL连接&#xff0c;并且查看ssl证书是否存在 一、查看MySQL服务器是否启用了SSL连接 1.登录MySQL服务器 在Linux终端中&#xf…

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题 【操作前先备份好电脑数据&#xff01;&#xff01;&#xff01;设置系统还原点等&#xff0c;防止系统出现问题&#xff01;&#xff01;&#xff01;谨慎请操作&#xff01;】 【操作前先备份好…

Windows本地提权 · 上篇

目录 at 命令提权 sc 命令提权 ps 命令提权 利用的是windows的特性&#xff0c;权限继承&#xff0c;命令或者服务创建调用的时候会以system权限调用&#xff0c;那么这个命令或者服务的权限也是system。 进程迁移注入提权 pinjector进程注入 MSF进程注入 令牌窃取提权…

chatgpt赋能python:Python中日期转换:从字符串到日期对象

Python中日期转换&#xff1a;从字符串到日期对象 作为一个经验丰富的Python工程师&#xff0c;日期转换在我的日常编码工作中经常遇到。Python提供了一些内置函数和模块&#xff0c;可以将字符串转换为日期对象或将日期对象格式化为特定的字符串。本篇文章将带您深入了解Pyth…

chatgpt赋能python:Python中的并运算:介绍及应用

Python中的并运算&#xff1a;介绍及应用 Python是一种功能强大且易于使用的编程语言&#xff0c;它的灵活性使得我们可以应用各种算法和数据结构进行处理。其中&#xff0c;位运算是Python中非常棒的特性之一&#xff0c;而其中又有一个重要的运算符——并运算。 什么是并运…

chatgpt赋能python:Python中的或运算:学习这个重要概念

Python中的或运算&#xff1a;学习这个重要概念 或运算是Python编程语言中一个重要的概念。了解如何使用或运算可以帮助程序员编写更有效和有意义的代码。在此文章中&#xff0c;我们将介绍Python中或运算的基础知识以及如何使用它来编写各种类型的代码。 什么是或运算&#…

Android笔记--内存管理

内存(Memory)是计算机的重要部件&#xff0c;也称主存储器&#xff0c;它用于暂时存放CPU中的运算数据&#xff0c;以及与硬盘等外部存储器交换的数据。Android中&#xff0c;内存是如何分配的&#xff1f;当启动一个android程序时&#xff0c;会启动一个dalvik vm进程&#xf…

linux条件变量知识点总结

与条件变量相关API 条件变量是线程另一可用的同步机制。条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时&#xff0c;允许线程以无竞争的方式等待特定的条件发生。 条件本身是由互斥量保护的。线程在改变条件状态前必须首先锁住互斥量&#xff0c;其他线程…

chatgpt赋能python:Python中的“5“+“5“:了解运算符重载和字符串拼接

Python中的 “5”“5”: 了解运算符重载和字符串拼接 Python中的运算符重载允许我们自定义类型的操作符行为。当我们使用加号运算符将两个对象相加时&#xff0c;Python会动态地确定该使用哪种类型的操作符行为。在使用字符串时&#xff0c;加号可以用于字符串的连接&#xff…

【编译、链接、装载二】/lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录

【编译和链接二】bash: ./test.out: /lib/ld64.so.1: bad ELF interpreter: 没有那个文件或目录 一、问题起因二、ldd查看三、解决方案一&#xff1a;使用gcc链接四、查找其他解决方案五、解决方案二&#xff1a;软链接 bash: ./test.out: /lib/ld64.so.1: bad ELF interpreter…

SpringBoot框架总结

一、SpringBoot框架的概念 1、传统框架的弊端 例如传统的SSM框架整合了MyBatis、Spring、SpringMVC框架&#xff0c;但其需要繁琐且重复的配置使程序员很是痛苦 2、SpringBoot框架 SpringBoot框架在传统框架的基础上对其进一步封装&#xff0c;只需要一些简单的配置&#x…

MySQL第二章、数据库基础

回顾&#xff1a; 目录 一、数据库的操作 1.1创建数据库 1.2显示当前数据库 1.3使用数据库 1.4删除数据库 二、常用数据类型 2.1数值类型&#xff08;分为整型和浮点型&#xff09; 2.2字符串类型 2.3 日期类型 三、表的操作 ​编辑 3.1创建表 3.2查看表结构 ​编…