【Java】springboot

文章目录

    • Spingboot
      • 1、起步依赖
      • 2、构建springboot工程jar包
      • 3、springboot配置文件
      • 4、多环境配置
      • 5、maven和boot多环境兼容问题
      • 6、配置文件分类
      • 7、springboot整合mybatis

Spingboot

springboot用来简化spring的初始搭建以及开发过程。

比方说,创建一个springmvc程序。先导入很多很多坐标,然后写很多的配置类。很麻烦。

而如果使用springboot,spring和springmvc的大量依赖和它们的两个配置类可以得到简化。并且springboot还内置了一个tomcat服务器。

从spring的官网上就可以下载到一个springboot工程的模板。用这个模板开始开发。

1、起步依赖

最简单的springboot程序包含两个文件:Application类和pom文件。

只要运行Application类,就可以启动springboot,tomcat也会跟着启动。

pom文件之中有最基础的两个依赖。一个是继承的依赖starter-parent,springboot最基础的依赖,springboot所有的东西都建立在其之上。另一个是starter-web依赖,springboot程序能够完成web开发就以这个依赖作为基础。

在这里插入图片描述

starter-parent这个依赖,里边实际上配置了200多个依赖(mysql、servlet、springweb等等),并且这些依赖的版本都是没有冲突的。这些依赖都用dependencyManagement进行管理,要用到的时候直接引入即可。

starter-web这个依赖存在于starter-parent这个依赖中。它是做web需要用到的依赖,所以将其从starter-parent这个依赖引下来。

另外,starter-parent中还有starter-test依赖,可以用来做测试,也可以引下来。

另外,starter-web这个依赖中存在starter这个依赖,如果不添加start-web依赖,也必须要添加start依赖。

springboot默认使用tomcat作为服务器,但是其实可以更改为jetty服务器。starter-parent之中具有jetty的服务器。只要把tomcat服务器的依赖排除掉,然后使用jetty服务器即可。

在这里插入图片描述

2、构建springboot工程jar包

要构建springboot工程的jar包,需要同时包含springboot依赖的所有jar包,并且要指定一个入口类才能使用java -jar启动jar包。

maven使用默认的指令package是没法包含springboot依赖的jar包并指定入口类的。需要在pom文件中专门导入一个maven打包的插件用于打包springboot工程。

在这里插入图片描述

3、springboot配置文件

基础springboot工程只有启动类和pom文件,但是如果想要更改springboot的设置,或者想要配置一些设置项(比如mysql的数据源),就需要引入配置文件了。

三种配置文件(properties,yml,yaml),可以在这三种中写springboot的配置信息。当三种同时存在时,properties的优先级最高,yaml的优先级最低。

有些配置项配置了,会被springboot自动读取。如果开发者想要获取到配置项的内容,应该如何做呢?

第一种方式:使用自动装配基本类型@value即可。

在这里插入图片描述

第二种方式:使用springboot提供的类Enviroment,使用@Autowired自动装配,所有设置项都会被封装到这个对象中。

在这里插入图片描述

第三种方式,引入依赖然后自定义一个封装类即可。

在这里插入图片描述
在这里插入图片描述

4、多环境配置

在配置文件中配置即可。

在这里插入图片描述

将springboot打包,可以在启动jar包的时候指定特定的环境。

java -jar springboot.jar --spring.profiles.active=test

其实启动jar包的时候可以修改配置文件中的信息。

java -jar spirngboot.jar --server.port=10001 --spring.profiles.active=pro

5、maven和boot多环境兼容问题

之前maven高级应用的时候也有一个多环境开发,boot和maven之间可以实现同步。要想要springboot能够和maven的多环节依赖产生联系,只需要让springboot读取pom文件激活的环境配置即可。

要实现boot读取pom文件中的属性,要在pom中加个插件:

在这里插入图片描述

然后在springboot的配置中激活maven的指定环境。使用${}占位符来获取pom文件中的<properties>标签中的内容。

在这里插入图片描述

6、配置文件分类

配置文件在不同的位置,有不同的加载优先级。具体来说,将一个springboot项目打包,它会按照如下顺序加载配置文件:

在这里插入图片描述

这样可以更加方便对配置文件做管理。并且如果打包的时候jar包中的配置文件写错了,可以在jar包同级目录下添加修改后的配置文件来完成修改。不用重新部署jar包。

config目录主要是为了处理这样的场景:别人给了一个项目并且已经写好了配置文件,如果想要修改配置文件,最好不要直接在他的配置文件中修改,这时候就可以新建config目录,在这个目录下添加配置文件。springboot会优先加载这个目录下的配置文件。

7、springboot整合mybatis

springboot整合mybatis非常非常简单。只需要导入mybatis和mysql的依赖,然后在springboot的配置文件中编写数据源,然后为数据层接口添加注解@Mapper,接下来为接口中方法添加各种mybatis注解/编写sql映射文件,就可以调用接口中各种方法执行数据库查询操作了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

spring整合mybatis的时候,还需要将mybatis的配置文件中数据库连接和包扫描的部分做成bean,springboot将这两部分隐藏起来了。

由于springboot的配置文件中有数据源的信息,所以mybatis会自动读取配置文件创建SqlSessionFactoryBean。

由于springboot的数据层接口会加上@Mapper注解,这个注解可以代替包扫描的作用。

当接口自动装配,发现这个接口上存在Mapper注解,springboot会去寻找IoC容器中的SqlSessionFactoryBean以及sql映射文件帮助该接口创建代理对象。然后这个接口就可以执行各种查询了。

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

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

相关文章

数据科学与python语言——Matplotlib数据可视化基础

Matplotlib数据可视化基础一.读取数据与数据处理阶段1.提取指定行中的数据2.得到>指定数值的数据3.得到指定值得数据4.整体的数据处理&#xff1a;二.画图函数1.plt.subplots()2.plt.subplots_adjust()3.设置x轴y轴的刻度和标签4.使用中文标题在作图时三.画折线图(plot)四.画…

2021年,Azure云遇到. NET5,注定开启高光时刻,微软的心,真大!

云开发诞生的市场背景云开发是一个已经存在了很多年的概念&#xff0c;但在过去未能真正成为主流。然而&#xff0c;由于云和软件即服务的宏观趋势的结合&#xff0c;以及技术的进步&#xff0c;如容器技术 Docker 和 Kubernetes&#xff0c;云开发现在有机会最终成为基于云的应…

fpga开发教程 labview_LabVIEW项目样例 - NI VST FPGA软件编程使用步骤与实例教程

3. LabVIEW项目样例NI VST仪器设计库的能力强大&#xff0c;但是并不能单枪匹马地完全满足软件设计仪器实现默认功能的要求&#xff0c;也不能提供大多数VSA和VSG仪器编程人员所熟悉的简单主机接口。LabVIEW 2012提供了一个新功能&#xff0c;这种方便的机制不仅能够分配附加代…

.net5+nacos+ocelot 配置中心和服务发现实现

相关文章&#xff1a;手动造轮子——为Ocelot集成Nacos注册中心出处&#xff1a;https://www.cnblogs.com/buruainiaaaa/p/14121176.html作者&#xff1a;唐 最近一段时间 因公司业务需要&#xff0c;需要使用.net5做一套微服务的接口&#xff0c;使用nacos 做注册中心和配置中…

数据科学与python语言——Pandas统计分析基础(时间转换+聚合)

Pandas统计分析基础&#xff08;时间转换聚合&#xff09;实验要求一实验二要求全部代码实验要求一 #M表的时间戳类型转为datetime data_Mete[TIMESTAMP]pd.to_datetime(data_Mete[TIMESTAMP],format%Y%m%d%H%M%S)data_VI[Date]pd.to_datetime(data_VI[Date],format%Y/%m/%d) p…

用keil怎么擦除_分享STM32 FLASH 擦除(以及防止误擦除程序代码)、写入

编译环境&#xff1a;我用的是(Keil)MDK4.7.2stm32库版本&#xff1a;我用的是3.5.0一、本文不对FLASH的基础知识做详细的介绍&#xff0c;不懂得地方请查阅有关资料。对STM32 内部FLASH进行编程操作&#xff0c;需要遵循以下流程&#xff1a;FLASH解锁清除相关标志位擦除FLASH…

如何在 ASP.NET Core 中使用 Quartz.NET 执行任务调度

当我们在web开发中&#xff0c;常常会遇到这么一个需求&#xff0c;在后台执行某一项具体的任务&#xff0c;具体的说就是这些任务必须在后台定时执行。Quartz.NET 是一个开源的 JAVA 移植版&#xff0c;它有着悠久的历史并且提供了强大的 Cron 表达式&#xff0c;这篇我们就来…

数据科学与python——Pandas统计分析基础(数据堆叠+数据清洗)

Pandas统计分析基础数据堆叠数据清洗一.合并数据&#xff1a;获取完整的数据集。1.读取数据2.将两个csv文件按照mete.csv文件的日期对齐3.纵向合并数据data1与data24.使用drop_duplicates()函数去除重复值二.异常值处理&#xff1a;去除data3中GPP中的异常点1.根据3σ原则检测异…

python 为什么动态语言图片_聊聊动态语言那些事(Python)

动态编程语言是高级程序设计语言的一个类别&#xff0c;在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言&#xff1a;例如新的函数、对象、甚至代码可以被引进&#xff0c;已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力&#xff0…

容器的那点事

当我们的后端服务器不够用的时候&#xff0c;我们可以通过容器技术&#xff0c;可以快速的把这些服务器全部虚拟出来&#xff0c; 当然这个虚拟跟虚拟机是不一样的&#xff0c;比虚拟机的方式快多了&#xff0c;早期阿里的淘宝平台如果整个坏掉了&#xff0c;重新搭建部署起来需…

lqb——修改数组

思路 **常规思路用哈希表的思想,设置bool数组标识是否被占用过,但是发生矛盾时将会造成查找需要遍历整个数组,比如,1,2,3……100000已连续占用,此时再插入1,将会一直遍历这100000个数,极端情况下,插入100000个1,将是n平方的复杂度。 如何快速查找到插入位置,这就引…

bp神经网络训练_数据分析模型6——神经网络基础(人工智能的底层模型)

未经许可请勿转载更多数据分析内容参看这里今天我们来学习人工智能的底层模型——神经网络&#xff08;NEURAL NETWORKS&#xff09;&#xff0c;现在比较热门的一个模型是深度学习&#xff0c;深度学习的基础也是神经网络&#xff0c;要学好深度学习&#xff0c;神经网络不了解…

四种最令人讨厌的编程语言:Java、Javascript、C++和Perl

喜欢就关注我们吧&#xff01;TIOBE 12 月榜单已于日前公布&#xff0c;在最新的排行榜中&#xff0c;C 语言仍高居榜首&#xff0c;其次分别是 Java、Python 和 C。在编程语言这一领域中&#xff0c;许多编程语言都会随着时间的推移而经历人气的激增&#xff0c;以及历史迭代之…

机器学习之数据预处理——特征编码(标签编码,独热编码)

机器学习之数据预处理——特征编码 数据预处理——特征编码离散数据的编码标签编码sklearn LabelEncoder(使用fit_transform函数)sklearn LabelEncoder(反向变换可以用函数 inverse_transform)独热编码sklearn OneHotEncoder机器学习里有一句名言:数据和特征决定了机器学习的上…

微软用的工具,统一财务三大表及高级分析通用模板

虽然罗叔并非财务专业&#xff0c;但大概了解一些财务常识。例如财务报表的三大报表以及一些常见分析等。本月《BI真经》视频课程即将就绪&#xff0c;后续罗叔将和大家开展更多的业务研究。我们知道&#xff0c;PowerBI 在绘制某些报告时候很难&#xff0c;初学者根本无法实现…

文件 单片机_如何查看你写的单片机程序有多大?

单片机我们都用过&#xff0c;我们知道单片机的FLASH有4K的&#xff0c;有8K的&#xff0c;单片机程序我们也写过&#xff0c;但是我们写好的程序有多大&#xff0c;你知道吗&#xff1f;程序写好并编译后生成hex文件&#xff0c;这个hex文件就是要下载到单片机里的文件&#x…

机器学习之数据预处理——数据清洗(缺失值、异常值和重复值的处理)

机器学习之数据预处理——数据清洗缺失值、异常值和重复值的处理 基础知识技术点总结数据列缺失的处理方法1、丢弃(缺失值处理)1、生成一份随机数据2、查看哪些值缺失3、获得含有NA的列4、获取全部为NA的列5、丢弃缺失值2、补全(缺失值处理)1、使用sklearn将缺失值替换为特…

小说中场景的功能_如何让你的小说中的场景转换自如?

很多人很头疼场景、时间转换要怎么办&#xff0c;可以用章节作为转换的过渡&#xff0c;那么章节内呢&#xff1f;我看到最普通的做法就是画分割线&#xff0c;殊不知这种做法在稍微有点阅读功底的读者眼中都是很……怎么说&#xff0c;很没品吗&#xff1f;嗯&#xff0c;或许…

夏虫不可语冰

此次事件让我再次体会到了什么是“夏虫不可语冰”。博客园有些人压根没看完你的文章&#xff0c;带着已有认知断章取义不暇思索上来就是喷。不过&#xff0c;以前也遇到过&#xff0c;现在也慢慢习惯了。对于托管堆内存泄漏的说法&#xff0c;不管认不认同&#xff0c;我还是希…

机器学习之数据预处理——归一化,标准化

机器学习之数据预处理——归一化,标准化 基础知识1.什么是特征预处理2.预处理方法 :3.预处理API:数据的标准化(normalization)和归一化数据的标准化数据归一化1 把数变为(0,1)之间的小数2 把有量纲表达式变为无量纲表达式常用归一化方法最大-最小标准化(MinMaxScaler)Z-s…