【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映射文件帮助该接口创建代理对象。然后这个接口就可以执行各种查询了。

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

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

相关文章

AI时代下,如何看待“算法利维坦”?

ChatGPT的浪潮从2022年袭来后&#xff0c;至今热度不减&#xff0c;呈现出蓬勃发展的趋势。AI家居、医疗、教育、金融、公益、农业、艺术…AI真的已经走进了生活的方方面面&#xff0c;我们仿佛已经进入了AI时代&#xff0c;势不可挡。人工智能水平如此之高&#xff0c;不禁感慨…

医疗器械行业为什么要搭建自己的知识付费平台

随着医疗技术的不断进步&#xff0c;医疗器械行业正迅速发展&#xff0c;成为全球范围内的热门产业。医疗器械行业需要不断更新技术、提升产品质量、加强用户培训和推广新产品。在这个过程中&#xff0c;搭建自己的知识付费平台变得越来越重要&#xff0c;本文将深入探讨为什么…

DAY1C++

1、思维导图 2.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符串&#xff0c;实现求字符串大小的函数。 #include <iostream>using namespace std;namespace myspace{string s1("call your name");int len_s(string s){return s1.length();…

关于Word中隐藏文本的知识,看这篇就够了

Word允许你隐藏文本&#xff0c;这样你就可以阅读或打印文档&#xff0c;就好像文本不在那里一样。这似乎毫无意义&#xff0c;因为如果你不想让别人阅读&#xff0c;为什么不删除文本呢&#xff1f;但隐藏文本确实有一些有趣的用途。让我们来看看什么是隐藏文本&#xff08;什…

Python(六)—— 自定义模块

15. 自定义模块 15.1 模块的定义与分类 15.1.1 模块的定义 一个函数封装一个功能&#xff0c;当遇到众多函数时&#xff0c;将这些相同的功能封装到一个文件中&#xff0c;那么这个存储着很多常用的功能的py文件&#xff0c;就是模块。模块就是文件&#xff0c;存放一堆常用…

Oracle 19c OCP 082考场真题解析第16题

考试科目&#xff1a;1Z0-082 考试题量&#xff1a;90 通过分数&#xff1a;60% 考试时间&#xff1a;150min 本文为云贝教育郭一军guoyJoe原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。【云贝教育】Orac…

腾讯云上mysql连接不上

腾讯云服务器默认没开放&#xff0c;3306端口。 1.去腾讯云控制台 2.找到自己的服务器 3选择防火墙 4.添加规则 至此完事了。

Checkpoint 执行机制原理解析

在介绍Checkpoint的执行机制前&#xff0c;我们需要了解一下state的存储&#xff0c;因为state是Checkpoint进行持久化备份的主要角色。Checkpoint作为Flink最基础也是最关键的容错机制&#xff0c;Checkpoint快照机制很好地保证了Flink应用从异常状态恢复后的数据准确性。同时…

搞懂SkyWalking(40张图)

前言 在微服务架构中&#xff0c;一次请求往往涉及到多个模块&#xff0c;多个中间件&#xff0c;多台机器的相互协作才能完成。这一系列调用请求中&#xff0c;有些是串行的&#xff0c;有些是并行的&#xff0c;那么如何确定这个请求背后调用了哪些应用&#xff0c;哪些模块…

Python 高级(三):多线程 threading

大家好&#xff0c;我是水滴~~ 在Python中&#xff0c;threading模块提供了一种简单而强大的方式来进行多线程编程。多线程可以同时执行多个任务&#xff0c;使程序能够更有效地利用计算资源。本教程将介绍threading模块的基本概念、用法和一些常见的多线程编程模式。 文章中…

【JAVA】黑马MybatisPlus 学习笔记【终】【插件功能】

4.插件功能 MybatisPlus提供了很多的插件功能&#xff0c;进一步拓展其功能。目前已有的插件有&#xff1a; PaginationInnerInterceptor&#xff1a;自动分页TenantLineInnerInterceptor&#xff1a;多租户DynamicTableNameInnerInterceptor&#xff1a;动态表名OptimisticL…

Python 新规范 pyproject.toml 完全解析

多谢&#xff1a;thank Python从PEP 518开始引入的使用pyproject.toml管理项目元数据的方案。 该规范目前已经在很多开源项目中得以支持&#xff1a; Django 这个 Python 生态的顶级项目在 5 个月之前开始使用 pyproject.tomlPytest 这个 Python 生态测试框架的领头羊在 4 个…

HarmonyOS4.0系统性深入开发04UIAbility组件详解(下)

UIAbility组件间交互&#xff08;设备内&#xff09; UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时&#xff0c;会涉及到启动特定的UIAbility&#xff0c;该UIAbility可以是应用内的其他UIAbility&#xff0c;也可以是其他应用的UIAbility&#xff08;例如启…

java练习题之接口interface练习

1&#xff1a;关于接口和抽象类&#xff0c;下列说法正确的是&#xff08;ACD&#xff09; A.抽象类可以有构造方法&#xff0c;接口没有构造方法 B.抽象类可以有属性&#xff0c;接口没有属性 C.抽象类可以有非抽象方法&#xff0c;接口中都是抽象方法 1.8之后 D.抽象类和接…

比亚迪重磅来袭,汽车圈又要大动干戈?

12月15日&#xff0c;我盼望已久的新车————宋L正式登场&#xff01; 作为一直关注比亚迪的车主&#xff0c;这款新SUV一直处于我的观测范围内。终于在前几日&#xff0c;比亚迪宣布它将于12月15日上市&#xff0c;这对我来说无疑是个好消息。当我了解到宋L将推出后驱和四驱…

【Unity6.0+AI】Unity版的Pytorch之Sentis-把大模型植入Unity

本教程详细讲解什么Sentis。以及恶补一些人工智能神经网络的基础概念,概述了基本流程,加载模型、输入内容到模型、使用GPU让模型推理数据、输出数据。 官方文档 Unity Sentis: Use AI models in Unity Runtime | Unity 主页介绍 官方文档链接:Sentis overview | Sentis | 1…

挑战Python100题(6)

100+ Python challenging programming exercises 6 Question 51 Define a class named American and its subclass NewYorker. Hints: Use class Subclass(ParentClass) to define a subclass. 定义一个名为American的类及其子类NewYorker。 提示:使用class Subclass(Paren…

Scala安装

Scala安装使用 windows安装,配置环境变量 以下载Scala2.11为例&#xff0c;操作在Windows中安装Scala。 官网下载scala2.11&#xff1a;All Available Versions | The Scala Programming Language下载好后安装。双击msi包安装,记住安装的路径。配置环境变量&#xff08;和配…

YOLOv7训练数据报错

YOLOv7训练数据报错 错误提示1解决方案问题2解决方案成功运行 错误提示1 fatal: not a git repository (or any of the parent directories): .git Traceback (most recent call last):File "/home/ubuntu/code/yolov7-main/utils/google_utils.py", line 26, in att…

一图梳理多模态领域发展简史

本文采用关系图的方式整理了&#xff1a;CLiP、ViLT、FLiP、ALBEF、CoCa、BLiP、VLMo、BEiT 和BEiT v3等近几年来经典的多模态大模型&#xff0c;以及这些工作的相互依托关系。灵感来自&#xff1a;跟李沐读论文系列——多模态串讲 1 模型关系图&#xff1a; ’ 2 各模型的架…