springboot学习笔记

目录

概述

常见的SSM搭建项目弊端

什么是springboot

特点

1.简化部署

2.简化配置,注解代替xml

3.简化依赖配置

4.应用监控

springboot与springmvc,springcloud关系

创建springboot项目

spring4提供的注解

Spring的发展

Java配置

1.核心注解

@Configuration

@Bean

springboot核心

入口类

@SpringBootApplication注解

@SpringBootApplication的属性

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan

配置文件

全局配置文件

自定义配置值

格式

普通值,如数字,字符串,布尔

对象/map类型,即有键值对

数组,List,Set

嵌套

读取指定配置文件配置的值

@PropertySource(value={"classpath:jdbc.properties"})+@Value

@ConfigurationProperties(perfix="persion")

@ImportResource(classpath:xxxx.xml)

@Import 导入额外的配置信息


概述

常见的SSM搭建项目弊端

上手麻烦,很多框架的初学者根本不知道要从何开始搭建一个项目,对初级开发者很不友好

配置繁杂,使用一个框架,或者向项目中集成一个插件,要专门学习配置文件,哪怕是细微的配置错误,也会导致无法使用,而且排查起来特别困难,对初级开发者很不友好

项目需要单独配置容器,编写好的项目还需要自己配置Tomcat运行,又多了一个额外的步骤,一旦配置有问题,又可能要折腾很久,对初级开发者很不友好

什么是springboot

spring组件的一站式快速开发框架,避免了众多繁琐的配置,极大的简化了开发者的学习成本,项目搭建成本,对初级开发者十分友好

特点

1.简化部署

内置tomcat,jetty容器,不再需要开发者打成war包部署到容器中,只要打成一个独立的jar就可以独立运行,所有依赖均在一个jar包中

2.简化配置,注解代替xml

注解代替xml是spring4.x的核心功能,springboot的配置文件只有一个application.yml,开发者不再需要配置一大堆的xml,properties

使用一个第三方框架的配置变得十分简单

3.简化依赖配置

springboot启动器会将一组依赖打包到一起,作为一个启动器,比如spring-boot-starter-web包含了web开发需要的spring-web,springmvc等依赖

4.应用监控

springboot可以监控服务和应用

springboot与springmvc,springcloud关系

1.springboot是spring组件的一站式快速开发框架

2.springmvc是基于spring的mvc框架

3.springboot是springcloud的基础,springcloud是一站式微服务框架

创建springboot项目

1.打开IDEA,创建新项目,选择Spring Initializr,填写路径和项目名,选择maven作为构建工具,选择JDK版本

2.选择初始化项目时要导入的依赖,这里我们因为是简单演示,只选择了spring-web,有需要可以挨个点开看看哪些是可能用到的,可以一并导入,点击确定即创建项目

3.配置SDK和maven,等待maven依赖导入完成即可,到这一步,这个springweb项目就创建完成了,我们完全没有配置什么spring文件,springmvc文件

4.启动项目

点击main方法的启动按钮,或者使用IDEA上面的启动按钮,就可以使用springboot内置的tomcat容器来启动我们的项目,我们完全没有自己手动打包,配置tomcat去运行

5.看看我们的pom文件,有一个web项目启动器

spring-boot-start-parent

封装好了版本号,提供版本控制,导入它以后,导入其他依赖时不再需要配置version

spring-boot-starter-web

springweb核心组件,包含了web项目所需所有核心依赖

原理是maven依赖的子父关系

springboot把需要的一类依赖封装好,导入一个依赖就可以应用

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

点进去会发现包含多个依赖
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>3.1.5</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-json</artifactId>
    <version>3.1.5</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>3.1.5</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.0.13</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.0.13</version>
    <scope>compile</scope>
  </dependency>
</dependencies>

spring4提供的注解

Spring的发展

1.Spring1.X完全通过xml配置

2.Spring2.X可以使用注解对Bean进行声明和注入

1.应用的基本配置用xml

2.业务逻辑中的开发用注解,如service中@Autowire

3.Spring3.X开始提供了Java配置方式,可以通过Java代码配置

4.Spring4.X推荐使用Java配置方式

Java配置

Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置

1.核心注解

@Configuration

作用于类上,标记该类是一个配置类,相当于以前的xml配置文件

@Bean

作用于方法上,相当于xml中的,将方法的返回值交由spring容器管理

springboot核心

入口类

@SpringBootApplication注解

Spring Boot的核心注解,是一个复合注解,包含@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解

@SpringBootApplication的属性

scanBasePackages:指定扫描包,通常不指定

exclude:指定不扫描的包,通常不指定

@SpringBootConfiguration

后缀是Configuration,没错,这个注解继承了@Configuration,配置注解

@EnableAutoConfiguration

开启自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置所需要的配置项

如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC

@ComponentScan

容器扫描自动装配,默认扫描该注解所在类的同级目录及子目录,因此通常把启动类放在项目根目录下

可以通过basePackages属性配置扫描的目标包,但通常不会这么做

可以通过excludeFilters属性配置不扫描的包

配置文件

spring配置文件为yml或者properties,通常使用yml

全局配置文件

springboot全局配置文件可以是application.yml或application.properties,默认放在resources目录下,通常是application.yml

相比以往的配置方式,采用树形结构,更符合编码习惯,有上千个配置可供选择

我们不在此处讨论框架的配置,只讨论自定义值的配置

自定义配置值

格式

缩进+冒号后空格

普通值,如数字,字符串,布尔
name: zhangsan
注意:
字符串默认不用加上单引号或者双引号
使用双引号需要考虑转义,单引号不需要考虑转义
"zs\n ls"    zs换行ls
'zs\nls'    zs\nls
对象/map类型,即有键值对
key:
    key: value
    key: value
或者 key:{key: value,key: value}
Person:
    name: zhangsan
    age: 20
数组,List,Set
key:
    - value
    - value
或者key: [value,value]
注意:
用 - 值表示数组中的一个元素

PersonList:
    - zhangsan
    - lisi
嵌套
student:
    -name: zhangsan
     age: 18
    -name: lisi
     age: 17
或者:student: [{name: zhangsan,age: 18},{name: lisi,age: 17}]

读取指定配置文件配置的值

某些时候,我们有可能针对某个类必须要用到单独的配置文件,把配置的值注入到Bean中,此时可以使用@PropertySource+@Value

@PropertySource(value={"classpath:jdbc.properties"})+@Value

1.作用在类上,在该类的范围内,读取指定位置的配置文件

2.springboot默认只会加载application.yml/application.properties

3.配置可以为多个,用逗号隔开

value={"classpath:jdbc.properties","xxx","xxx"}

4.配置文件有可能找不到,设置ignoreResourceNotFound=true,允许配置文件缺失

@PropertySource(value={"classpath:jdbc.properties"}, ignoreResourceNotFound=true)

@Value("${jdbc.url}"),作用在变量上,获取配置项的值给定变量

@PropertySource(value={"jdbc.properties"}, ignoreNotFound=true)
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@ConfigurationProperties(perfix="persion")

用来简化@PropertySource+@Value

通常作用在配置类上,表示属性自动装配,perfix前缀+该类的属性名,去配置文件中找对应的配置值装配到对应的属性上

注意:

前缀的单个单词首字母不能大写

如果该类的变量上同时使用了@Value,以ConfigurationProperties为准

使用对象中的数据,要在具体的方法中使用,而不能在类中直接使用,涉及依赖注入的顺序

login
    username: zhangsan
    password: 123456

@Configuration
public class loginConfig {
    private String username;
    private String password;
}

@ImportResource(classpath:xxxx.xml)

由于springboot只会加载yml和properties,当某个类下必须读取xml配置,就要使用@ImportResource注解

如果在启动类上使用,就可以读取原本的applicationContext.xml作为项目启动的配置文件

通常不会这么做

@Import 导入额外的配置信息

功能和xml的import一致,其实就是将配置分类,通过不同的配置文件进行配置

pom启动器依赖包

SpringBoot提供了绝大多数开发场景的starter pom,只要导入就能通过自动配置消除繁琐的配置

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构造函数,原型对象,实例对象

1.构造函数、原型对象、实例对象三者分别是什么&#xff1f; 构造函数&#xff1a;用来创建对象的函数&#xff0c;创建实例对象的模板 。构造函数的函数名尽量首字母大写(为了区分普通函数和构造函数)原型对象&#xff1a;每一个函数在创建的时候&#xff0c;系统都会给分配一…

wpf devexpress 绑定数据编辑器

定义视图模型 打开前一个项目 打开RegistrationViewModel.cs文件添加如下属性到RegistrationViewModel类 [POCOViewModel] public class RegistrationViewModel {public static RegistrationViewModel Create() {return ViewModelSource.Create(() > new RegistrationVie…

振弦式渗压计的安装方式及注意要点

振弦式渗压计的安装方式及注意要点 振弦式渗压计是一种高精度、高效率的地下水位测量仪器。它可以测量地下水位的高度&#xff0c;计算地下水的压力&#xff0c;从而推算出地下水的流量。对于地下水资源管理和保护、治理工程等方面具有非常重要的意义。在安装振弦式渗压计时&a…

什么是媒体见证?媒体宣传有哪些好处?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 一&#xff0c;什么是媒体见证&#xff1f; 媒体见证是指企业举办活动&#xff0c;发布会&#xff0c;邀请媒体现场采访的一种宣传方式&#xff0c;媒体到场后&#xff0c;对其进行记录…

金蝶云星空对接打通旺店通·旗舰奇门采购退料单查询接口与创建货品档案接口

金蝶云星空对接打通旺店通旗舰奇门采购退料单查询接口与创建货品档案接口 来源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上&#xff0c;提供了标准的管理模式&#xff1b;通过标准的业务架构&#xff1a;多会计准则、多币别、多地点、多组织、多税制应用…

ModuleNotFoundError: No module named ‘pycocotools‘

cuda 12.1 pytorch 2.0.1 python 3.11 运行代码&#xff0c;报该错误&#xff0c;尝试了以下方法解决&#xff1a; 方法一 # step 1: 安装cython pip install Cython# step 2: 安装pycocotools pip install githttps://github.com/philferriere/cocoapi.git#eggpycocotools…

MacOs 删除第三方软件

AppStore下载的软件 如果删除AppStore下载的软件&#xff0c;直接长按软件&#xff0c;点击删除或拖到废纸篓就可以完成软件的删除 第三方软件 但是第三方下载的软件&#xff0c;无法拖进废纸篓&#xff0c;长按软件也没有右上角的小叉 可以通过以下方法实现对软件的卸载 …

EMQX vs Mosquitto | MQTT Broker 对比

物联网开发者需要为自己的物联网项目选择合适的 MQTT 消息产品或服务&#xff0c;从而构建可靠高效的基础数据层&#xff0c;保障上层物联网业务。目前市面上有很多开源的 MQTT 产品&#xff0c;在性能功能等方面各有优点。本文将选取目前最为流行的两个开源 MQTT Broker&#…

详细介绍:国产操作系统银行麒麟V10的下载和安装

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一…

buildadmin+tp8表格操作(3)----表头上方按钮绑定事件处理,实现功能(选中或取消指定行)

在buildAdmin的表格中&#xff0c;通过按钮来选中和取消某一行 这种情况&#xff0c;只适合表格行的单选 在elementplus是这样说的 我们所使用的就是这个方法 看一下buildAdmin中的用法 highlight-current-row 是element-plus 中表格的属性 因为 buildadmin 中的table是对 el…

python用最小二乘法实现平面拟合

文章目录 数学原理代码实现测试 数学原理 平面方程可写为 A x B y C z D 0 AxByCzD0 AxByCzD0 假设 C C C不为0&#xff0c;则上式可以改写为 z a x b y d zaxbyd zaxbyd 则现有一组点 { p i } \{p_i\} {pi​}&#xff0c;则根据 x i , y i x_i,y_i xi​,yi​以及平面…

如何使用C#编写低代码应用插件

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 作为当今快速发展的技术之一&#xff0c;低代码平台为开发人员提供了更高效、更简便的工具和方法&#xff0c;以…

redis五大常见数据结构的操作命令(string, hash, list, set和zset)

string redis的string&#xff0c;直接按照二进制&#xff08;不做任何的转换&#xff0c;存的是什么取出来的依旧是什么&#xff09;的方式存储。所以string不仅仅可以存储文本数据&#xff0c;还可以存储整数&#xff0c;JSON&#xff0c;xml甚至音视频。但是string的大小最…

数据结构与算法之美学习笔记:21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?

目录 前言什么是哈希算法&#xff1f;应用一&#xff1a;安全加密应用二&#xff1a;唯一标识应用三&#xff1a;数据校验散列函数解答开篇内容小节 前言 本节课程思维导图 如果你是 一名工程师&#xff0c;你会如何存储用户密码这么重要的数据吗&#xff1f;仅仅 MD5 加密一下…

08.智慧商城——购物车布局、全选反选、功能实现

01. 购物车 - 静态布局 基本结构 <template><div class"cart"><van-nav-bar title"购物车" fixed /><!-- 购物车开头 --><div class"cart-title"><span class"all">共<i>4</i>件商品…

性格急躁怎么办?如何改变急躁的性格?

性格急躁很多人可能都有&#xff0c;有的人只是有过&#xff0c;而有些人持续的有&#xff0c;而且越来越频繁&#xff0c;要说偶尔出现性格急躁也算不上什么大问题&#xff0c;可是当急躁成了一种人格特征&#xff0c;或者说急躁是在一段时间内持续的&#xff0c;那么这问题就…

深度学习系列54:使用 MMDETECTION 和 LABEL-STUDIO 进行半自动化目标检测标注

参考https://mmdetection.readthedocs.io/zh-cn/latest/user_guides/label_studio.html&#xff0c;这里进行简要概述&#xff1a; 1. 启动目标检测服务 在mmdetection文件夹中&#xff0c;执行 label-studio-ml start projects/LabelStudio/backend_template --with \ conf…

【LeetCode】每日一题 2023_11_20 最大子数组和(dp)

文章目录 刷题前唠嗑题目&#xff1a;最大子数组和题目描述代码与解题思路 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 今天是一道 LeetCode 的经典题目&#xff0c;如果是 LeetCode 老手&#xff0c;估计都刷过&#xff0c;话是这么说&#xff0c;但咱…

STM32存储左右互搏 SPI总线FATS文件读写FLASH W25QXX

STM32存储左右互搏 SPI总线FATS文件读写FLASH W25QXX FLASH是常用的一种非易失存储单元&#xff0c;W25QXX系列Flash有不同容量的型号&#xff0c;如W25Q64的容量为64Mbit&#xff0c;也就是8MByte。这里介绍STM32CUBEIDE开发平台HAL库实现FATS文件操作W25Q各型号FLASH的例程。…

光纤的跳线和尾纤

光纤跳线和光纤尾纤在结构上、连接方式、应用场景等方面存在明显的区别。 光纤跳线有0.9、2.0、3.0&#xff0c;通常是区分光缆外径的。0.9光缆外径0.9mm的&#xff0c;2.0光缆外径2mm&#xff0c;3.0光缆外径3mm。 同时分单模光纤跳线和多模光纤跳线。单模一般是黄色&#xff…