spring boot 基础特性

Spring Boot 特性:

  • SpringBoot Starter(场景启动器):将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。
  • 使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。
  • 自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。
  • 使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包。
  • 提供了一些生产级的特性,例如:健康检查、指标监控、外部化配置等
  • 总体来说,Spring Boot 简化开发,简化配置,简化部署,简化整合,简化监控,简化运维

Springboot四大组件

  • starter组件,starter包的内容就是pom文件,就是一个依赖传递包。 帮我们封装好了所有需要的依赖,避免我们自己添加导致的一些Jar包冲突或者缺少包的情况.这些Starters作为Spring相关技术的引导过程,我们 不再需要担心依赖关系,它们将由Spring Boot Starters自动管理。
  • Autoconfigure 组件,就是帮我们自动把bean注入到IOC容器中
  • actuator组件,actuator是Spring Boot的监控插件,本身提供了很多接口可以获取当前项目的各项运行状态指标
  • Spring Boot CLI 组件(Command Line Interface)是一个命令行工具,可以用它来快速构建Spring原型应用。通过Spring Boot CLI,我们可以通过编写Groovy脚本来快速的构建出Spring Boot应用,并通过命令行的方式将其运行起来。

spring boot stater

  • spring boot相比于spring 最大的优点就是使用简单,约定大于配置,spring boot stater就是提前配置好的各种依赖的组合
  • stater包含了一系列可以集成到应用里面的依赖包,集成了Spring及其他技术,不需要到处找示例代码和依赖包。
  • stater 分为两类,一类是官方提供,命名为 spring-boot-stater-{name},一类是非官方的stater ,命名为:{name}- spring-boot-stater
  • 能够提前配置好spring 整合相关的配置和依赖,不用再去关心框架整合带来的问题

spring boot的依赖管理

  • 导入stater就可以一次导入所有相关的依赖
  • 每个springboot项目都有一个父项目spring-boot-starter-parent parent的父项目是 spring-boot-dependencies
    • dependencies 可以称为版本仲裁中心,其中定义了各种常见的 jar 包的版本,所以默认可以不写版本
    • 如果子项目需要导入其他版本,可以使用maven的就近原则,子项目声明就会使用子项目的,不写就使用的是父项目的
  • 如果是第三方的jar包,就需要自行声明版本

请添加图片描述

SpringApplication

  • 是整个springboot的核心api
  • @SpringBootApplication标准的类是主程序类

profiles 提供了环境隔离能力,可以快速切换开发、测试、生产环境

  • 标识环境:指定哪些组件、配置在哪个环境生效
  • 切换环境:这个环境对应的所有组件和配置就应该生效

Profile 配置文件

  • application-{profile}.properties可以作为指定环境的配置文件。
  • 激活这个环境,配置就会生效。最终生效的所有配置是
    • application.properties:主配置文件,任意时候都生效
    • application-{profile}.properties:指定环境配置文件,激活指定环境生效
  • spring.profiles.active需要配置在application.properties中,配置在其他带{profile}的配置文件中是不生效的
  • 主配置和激活的配置文件都生效,优先以激活的配置文件为准
  • profile优先级 > application 配置文件

yaml文件

  • yaml相比properties文件来说,层次分明可读性更强,在配置很多的时候优点很明显
  • 大小写敏感,使用缩进来表示层级关系,缩进时的空格数不重要,但是同层级的属性左侧必须对齐
  • 表示数组时, 一个 - 代表一个元素
  • 在配置字符时,单引号不会转义,双引号会转义
  • 配置大文本时,|开头会保留大文本的格式;>开头如果没有缩进会把换行压缩成空格,如果有缩进会保留格式

外部化配置

  • 可以线上快速修改配置,并应用最新配置
  • SpringBoot 使用 配置优先级+ 外部配置 简化配置更新、简化运维。
  • 只需要给jar应用所在的文件夹放一个application.properties最新配置文件,重启项目就能自动应用最新配置
  • Spring Boot 允许将配置外部化,以便可以在不同的环境中使用相同的应用程序代码,可以使用各种外部配置源,包括Java Properties文件、YAML文件、环境变量和命令行参数。
  • 可以使用@Value获取值,也可以用@ConfigurationProperties将所有属性绑定到java object中

请添加图片描述

配置文件优先级如下:(后面覆盖前面)

  • jar 包内的application.properties/yml
  • jar 包内的application-{profile}.properties/yml
  • jar 包外的application.properties/yml
  • jar 包外的application-{profile}.properties/yml
  • 也就是包外 > 包内,所以只需要给jar应用所在的文件夹放一个application.properties最新配置文件,重启项目就能自动应用最新配置
  • 建议使用一种格式的配置文件,如果.properties.yml同时存在,则.properties优先
  • 同级情况下profile配置 > application配置

规律:最外层的最优先。

  • 命令行 > 所有
  • 包外 > 包内
  • config目录 > 根目录
  • profile > application

配置不同就都生效(互补),配置相同高优先级覆盖低优先级

常用注解

  • 用于配置的注解
    • @Configuration :用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件
    • @Bean : 作用与方法上,使这个方法产生一个bean对象 ,交给Spring容器管理,bean默认的名字是方法名,也支持别名@Bean(“xx-name”)
    • @SpringBootConfiguration :同样是定义配置类,效果上等同于@Configuration
    • @Import :导入额外的配置信息,功能类似XML配置的,用来导入配置类,可以导入带有@Configuration注解的配置类或实现了ImportSelector/ImportBeanDefinitionRegistrar的类,导入的组件名称默认是全类名
    • @ComponentScan:组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。
      • @ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。
    • @Component :把普通pojo实例化到spring容器
    • @Scope作用域注解
      • @Scope在和@Component注解一起修饰在类上,作为类级别注解时,@Scope表示该类实例的范围
      • 在和@Bean一起修饰在方法上,作为方法级别注解时,@Scope表示该方法返回的实例的范围。
  • 条件注解
    • @Conditional注解它的作用是按照一定的条件进行判断,满足条件给容器注册bean。
    • 除了@Conditional注解外,springboot通过@Conditional注解又扩展了很多注解出来,如下@ConditionalOnBean、@ConditionalOnClass等等
  • 属性绑定
    • @ConfigurationProperties(prefix = “pre”) 只要在 Bean 上添加上了这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到 Bean 中
    • @EnableConfigurationProperties(XXX.class)开启某个类的属性绑定,用于快速注册注解,可以用于导入第三方写好的属性绑定配置类
  • @controller :用于标注控制层。这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层),
    @Service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)。
  • @Service :注入dao,用于标注服务层(业务逻辑层),主要用来进行业务的逻辑处理
  • @Repository:实现dao访问,用于标注数据访问层(Dao层/持久层)
  • @Entity :实体类注解
  • @Autowired:自动导入
    • @Autowired注解作用在构造函数、方法、方法参数、类字段以及注解上
    • @Autowired注解可以实现Bean的自动注入

@requestmapping注解

  • @RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上
  • 用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法
  • 用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping 和 GetMapping 的不同之处在哪里

  • RequestMapping 具有类属性的,可以进行 GET,POST,PUT 或者其它的注释中具有的请求方法。
  • GetMapping 是 GET 请求方法中的一个特例。它只是 ResquestMapping 的一个延伸,目的是为了提高清晰度。

定时任务用到的注解:

  • 要使用@Scheduled注解,首先需要在启动类添加@EnableScheduling,启用Spring的计划任务执行功能,这样可以在容器中的任何Spring管理的bean上检测@Scheduled注解,执行计划任务
  • 创建一个业务处理类,将该类注入到Spring容器之中(@Component),在类中创建需要处理的业务方法
  • 在该方法上面使用@Scheduled注解,使用@Scheduled时设置corn的值来设置业务处理的间隔时间
  • corn六个位置参数分别表示:
    • 秒(0~59) 例如0/5表示每5秒
    • 分(0~59)
    • 时(0~23)
    • 日(0~31)的某天,需计算
    • 月(0~11)
    • 周几( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)

springboot注解的特性

  • 简化MAVEN配置
  • 自动配置Spring
  • 开箱即用,没有代码生成,也无需XML配置

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

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

相关文章

Django 删除所有数据

1,添加模型 Test/app11/models.py from django.db import modelsclass Post(models.Model):title models.CharField(max_length200)content models.TextField()pub_date models.DateTimeField(date published)class Book(models.Model):title models.CharFiel…

论文翻译:Rethinking Interpretability in the Era of Large Language Models

https://arxiv.org/abs/2402.01761 在大型语言模型时代的可解释性再思考 摘要 在过去十年中,随着越来越大的数据集和深度神经网络的兴起,可解释机器学习领域的兴趣迅速增长。同时,大型语言模型(LLMs)在广泛的任务中…

TypeScript 基础类型(一)

简介 它是 JavaScript 的超集,具有静态类型检查和面向对象编程的特性。TypeScript 的出现,为开发者提供了一种更加严谨和高效的开发方式。 主要特点: 、静态类型检查。 通过静态类型检查,开发者可以在编译时发现错误&#xff0…

QQ频道导航退出

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140413538 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

Jquery常用操作汇总,dom操作,ajax请求

这段时间在写一些小Demo,用的都是很远古的Jquery,哈哈哈,但是呢也挺好玩儿的。想着记录一下。 题外话:补充一些自己欠缺的前端知识,(我的前端学的比较乱,哈哈哈,原生的js不是很熟,&a…

链表的回文结构(链表的中间节点+反转链表)

链表的回文结构 一.链表的中间节点思路1:暴力求解思路2:快慢指针 二.返回倒数第k个节点思路1:暴力求解思路2:快慢指针 三.反转链表思路1:头插法思路2:反转指针的指向 四.链表的回文结构思路1:利…

「C++系列」一篇文章讲透【运算符】

文章目录 一、运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 条件运算符(三元运算符)7. 成员访问运算符8. 指针和地址运算符9. 类型转换运算符10. 其他运算符 二、其他特殊运算符1. 成员访问运算符2. 指针和地址运算符3. 类…

Prometheus 云原生 - 监控 Linux、MySQL、Redis、RabbitMQ、Docker、SpringBoot 3.x

目录 开始 Exporter 采集数据,Prometheus 拉取并监控 Linux MySQL Redis RabbitMQ Docker SpringBoot 3.x 开始 Exporter 采集数据,Prometheus 拉取并监控 Note:Prometheus 和 Grafana 的部署已经在前面的章节中讲过了,不…

Solana Blink和SEND的崛起:技术与市场效应的结合

随着Solana生态系统的不断发展,新的项目和技术不断涌现,吸引了大量的关注和投资。最近,Solana的Blink项目及其相关的SEND代币成为了市场的焦点,引发了广泛的讨论和投资热潮。本文将探讨Blink和SEND的技术创新、市场表现以及未来的…

基于MATHCAD的傅里叶级数模拟和方波图像绘制

一、MATHCAD软件简介 MATHCAD是一款功能强大的数学计算软件,它允许用户以类似手写公式的方式输入数学表达式,并即时显示计算结果和图形。在工程研究和学术写作的世界里,MathCAD以其强大的符号运算能力和直观的数学书写体验脱颖而出。MATHCAD…

三相PWM整流器PI双闭环控制Simulink

1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Rb)软件。建议采用matlab2017 Rb及以上版本打开。(若需要其他版本可联系代为转换) 2.拓扑结构: 3.模型算法架构: 4.仿真算法: &am…

[AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性

目录 背景描述 用浏览器访问,正常返回 ​编辑 AHK v2官方示例源代码 AHK v2运行结果报错(0x80092004) 找不到对象或属性 用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性 附: 用Apifox访问,也正常返回 AHK v1 …

克洛托光电再度合作福晶科技,高精度光学镜头装调仪正式交付

近日,苏州东方克洛托光电技术有限公司(下称“克洛托光电”)高精度光学镜头装调仪正式交付于福建福晶科技股份有限公司,研发人员在现场完成设备安装调试并介绍使用方法。据悉,这已是双方第二次展开合作。 前沿产品力助推…

【tomcat】Tomcat如何扩展Java线程池原理

池化技术 在后端中,对于经常使用池化就是来提升系统性能,比如数据库连接池、线程池连接池等,本质都是利用空间换时间的来提升性能,用来避免资源的频繁创建和销毁,以此提高资源的复用率,所以合理设置系统所…

大语言模型诞生过程剖析

过程图如下 📚 第一步:海量文本的无监督学习 得到基座大模型🎉 🔍 原料:首先,我们需要海量的文本数据,这些数据可以来自互联网上的各种语料库,包括书籍、新闻、科学论文、社交媒体帖…

简单搭建卷积神经网络实现手写数字10分类

搭建卷积神经网络实现手写数字10分类 1.思路流程 1.导入minest数据集 2.对数据进行预处理 3.构建卷积神经网络模型 4.训练模型,评估模型 5.用模型进行训练预测 一.导入minest数据集 MNIST--->raw--->test-->(0,1,2...) 10个文件夹 MNIST--->raw-…

VRRP虚拟路由冗余技术

VRRP虚拟路由冗余技术:是一种路由容错协议,用于在网络中提供路由器的冗余备份。它通过将多个路由器虚拟成一个虚拟路由器并且多个路由器之间共享一个虚拟IP地址来实现冗余和高可用性。当承担转发业务的主路由器出现故障时,其他备份路由器可以…

安全防御:防火墙概述

目录 一、信息安全 1.1 恶意程序一般会具备一下多个或全部特点 1.2 信息安全五要素: 二、了解防火墙 2.1 防火墙的核心任务 2.2 防火墙的分类 2.3 防火墙的发展历程 2.3.1 包过滤防火墙 2.3.2 应用代理防火墙 2.3.3 状态检测防火墙 补充防御设备 三、防…

骑士人才系统74cms专业版实现本地VUE打包和在线升级方法以及常见问题

骑士人才系统我就不多说了目前来说我接触的人才系统里面除了phpyun就是骑士人才了,两个历史都很悠久,总起来说功能方面各分伯仲,前几期我作过Phpyun的配置教程这次我们针对骑士人才系统说说怎么使用VUE源码本地一键打包后台和在线升级方式&am…

每日Attention学习10——Scale-Aware Modulation

模块出处 [ICCV 23] [link] [code] Scale-Aware Modulation Meet Transformer 模块名称 Scale-Aware Modulation (SAM) 模块作用 改进的自注意力 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional as Fclass SAM(nn.Module):def __init__…