目录
SpringBoot目录
SpringBoot介绍_Spring缺点分析
SpringBoot介绍_什么是SpringBoot
SpringBoot介绍_SpringBoot核心功能
SpringBoot入门_通过官网搭建项目
SpringBoot入门_通过IDEA脚手架搭建项目
SpringBoot入门_SpringBoot项目结构
SpringBoot入门_通过Maven搭建项目
SpringBoot入门_编写Java代码
SpringBoot原理分析_起步依赖
查看spring-boot-starter-parent起步依赖
查看spring-boot-starter-web起步依赖
SpringBoot目录
SpringBoot介绍_Spring缺点分析
Spring是一个非常优秀的轻量级框架,以IOC(控制反转)和AOP(面向切面)为思想内核,极大简化了JAVA企业级项目的开发。虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。使用Spring进行项目开发需要在配置文件中写很多代码,所有这些配置都代表了开发时的损耗。
除此之外,Spring项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。比如Spring5.0以上只能使用Junit4.12以上的版本。
总结
Spring的缺点:
1.配置过于繁琐。
2.引入的依赖过多,版本控制复杂。
SpringBoot介绍_什么是SpringBoot
SpringBoot对Spring的缺点进行改善和优化,基于约定大于配置的思想,简化了Spring的开发,所谓简化是指简化了Spring中大量的配置文件和繁琐的依赖引入。所以SpringBoot是一个服务于框架的框架,它不是对Spring功能的增强,而是提供了一种快速使用Spring框架的方式。
SpringBoot的优点:
配置简单
1.依赖引入简单
2.提供了一些大型项目的非功能特性,如嵌入式服务器,安全指标,健康监测等。
SpringBoot介绍_SpringBoot核心功能
自动配置
SpringBoot项目自动提供最优配置,同时可以修改默认值满足特定的要求。
起步依赖
SpringBoot的依赖是基于功能的,而不是普通项目的依赖是基于JAR包的。SpringBoot将完成一个功能所需要的所有坐标打包到一起,并完成了版本适配,我们在使用某功能时只需要引入一个依赖即可。
SpringBoot入门_通过官网搭建项目
接下来我们搭建一个SpringBoot项目,并引入SpringMVC的功能,
首先我们可以通过官网搭建项目:
1.访问start.spring.io
2.生成SpringBoot项目
SpringBoot版本说明:
SNAPSHOT:快照版,表示开发版本,随时可能修改;
M1(Mn):M1是milestone的缩写,也就是里程碑版本;RC1(RCn):RC1是release candidates的缩写,也就是发布预览版;
Release:正式版,也可能没有任何后缀也表示正式版
SpringBoot打包类型说明:
使用SpringMVC开发的是一个web项目,但由于在SpringBoot中直接嵌入了Tomcat等
Web容器,所以在使用SpringBoot做Web开发时不需要部署War文件,只需要打成Jar
包即可。
SpringBoot入门_通过IDEA脚手架搭建项目
我们也可以在IDEA中利用脚手架工具搭建项目:
在IDEA中新建项目,项目类型为Spring Initializr,选择JDK版本
和搭建网站后点击下一步。
脚手架工具也会访问SpringBoot官网进行项目搭建,但SpringBoot官网有时访问速度较慢,我们也可以选择国内的镜像网站https://start.aliyun.com/搭建项目,阿里的脚手架镜像SpringBoot版本有些滞后。
选择项目参数后,点击下一步
选择SpringBoot版本和需要的起步依赖,点击下一步。
SpringBoot入门_SpringBoot项目结构
接下来我们分析SpringBoot的项目结构:
POM文件
SpringBoot项目必须继承spring-boot-starter-parent,即所有的SpringBoot项目都是spring-boot-starter-parent的子项目。
spring-boot-starter-parent中定义了常用配置、依赖、插件等信息,供SpringBoot项目继承使用。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0-M1</version><relativePath/>
<!-- lookup parentfrom repository -->
</parent>
SpringBoot项目中可以定义起步依赖,起步依赖不是以jar包为单位,而是以功能为单位
<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>
spring-boot-maven-plugin插件是将项目打包成jar包的插件。
该插件打包后的SpringBoot项目无需依赖web容器,可以直接使用JDK运行
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
启动类
启动类的作用是启动SpringBoot项目,运行启动类的main方法即可
启动SpringBoot项目。
@SpringBootApplication
public class Springbootdemo2Application {public static void mainString[] args) {SpringApplication.runSpringbootdemo2Application.class, args);}
}
配置文件
由于SpringBoot极大简化了Spring配置,所以只有一个application.properties配置文件,且Spring的自动配置功能使得大部分的配置都有默认配置,该文件的功能是覆盖默认配置信息,该文件不写任何信息都可以启动项目。
启动后默认端口号为8080,我们可以覆盖该配置:
server.port=8888
SpringBoot入门_通过Maven搭建项目
了解了SpringBoot结构后,我们也可以使用Maven手动搭建
SpringBoot项目:使用Maven创建普通JAVA项目
在pom中添加项目的父工程、起步依赖、插件
<!-- 父工程 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0-M1</version>
</parent><!-- 起步依赖 -->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
<!-- 插件 -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
编写启动类
@SpringBootApplication
public class SpringBootApp {public static void mainString[] args){SpringApplication.runSpringBootApp.class, args);}
}
编写配置文件application.properties
#日志格式
logging.pattern.console=%d{MM/dd
HH:mm:ss.SSS} %clr%-5level)
---[%-15thread] %cyan%-50logger{50}):%msg%n
#端口号
server.port=8888
运行启动类主方法,启动项目
SpringBoot入门_编写Java代码
之前搭建的SpringBoot项目已经都整合了SpringMVC,我们编写一
个控制器进行测试:
@Controller
public class MyController {@RequestMapping"/hello")@ResponseBodypublic String hello){System.out.println"hellospringboot!");return "hello springboot!";}
}
启动类在启动时会做注解扫描@Controller、@Service、@Repository……),扫描位置为同包或者子包下的注解,所以我们要在启动类同级或同级包下编写代码。
启动项目,访问http://localhost:8888/hello
SpringBoot原理分析_起步依赖
查看spring-boot-starter-parent起步依赖
按住 Ctrl 点击 pom.xml 中的 spring-boot-starter-parent ,跳转到了 spring-boot-
starter-parent 的 pom.xml ,发现 spring-boot-starter-parent 的父工程是 spring-boot-
dependencies 。
进入 spring-boot-dependencies 的 pom.xml 可以看到,一部分坐标的版本、
依赖管理、插件管理已经定义好,所以SpringBoot工程继承
spring-boot-starter-parent 后已经具备版本锁定等配置了。所以起步依赖
的作用就是进行依赖的传递。
查看spring-boot-starter-web起步依赖
按住 Ctrl 点击 pom.xml 中的 spring-boot-starter-web ,跳转到了 spring-boot-starter-
web 的 pom.xml ,从 spring-boot-starter-web 的 pom.xml 中我们可以发现, spring-
boot-starter-web 就是将web开发要使用的 spring-web 、 spring-webmvc 等坐标进
行了打包,这样我们的工程只要引入 spring-boot-starter-web 起步依赖的坐
标就可以进行web开发了,同样体现了依赖传递的作用。
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/17855.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
SpringBoot介绍
目录
SpringBoot目录 SpringBoot介绍_Spring缺点分析 SpringBoot介绍_什么是SpringBoot SpringBoot介绍_SpringBoot核心功能 SpringBoot入门_通过官网搭建项目 SpringBoot入门_通过IDEA脚手架搭建项目 SpringBoot入门_SpringBoot项目结构
SpringBoot入门_通过Maven搭建项目 S……
微信小程序游戏怎么开发入门教程
微信小程序游戏开发是现在比较热门的小程序类型开发项目,对于开发人员而言,怎么开发微信小程序游戏呢?今天小编分享一篇小游戏的入门开发教程,希望对微信小程序制作开发人员提供参考。
第一步:注册一个小程序账号
在……
教你写一个入门级别的五子棋AI
前言 本文只是介绍五子棋AI的实现,最终的成品只是一个 AI 接口,并不包括 GUI,且不依赖 GUI。 五子棋 AI 的实现并不难,只需要解决一个问题就行:
怎么确定AI的最佳落子位置? 一般情况下,五子棋棋……
[VUE3] Element Plus 增删拆改页组件拆解
[VUE3] Element Plus 增删拆改页组件拆解
组件拆解思路
https://procomponents.ant.design/components/table/?current1&pageSize5 一般按照我的理解,各部分功能区主要放置的东西如下所示。 高级筛选栏:筛选条件 、重置、搜索 标题栏:……
gcc: binutil: gprof,程序执行后函数调用栈及占比统计
文章目录 发现的地方简介命令格式输出格式编译格式原理发现的地方
https://people.duke.edu/~tkb13/courses/ncsu-csc230/lecture/24%20-%20Performance%20Optimization/old/24_Optimization.pdf 在搜索C语言的优化相关话题时,看到的一个tool; 感觉这个tool是非常的普通,应……
华为机试:报文解压缩
文章目录题目介绍题目解答解题思路算法实现运行截图题目介绍
题目描述
为了提升数据传输的效率,会对传输的报文进行压缩处理。输入一个压缩后的报文,请返回它解压后的原始报文。压缩规则:n[str],表示方括号内部的 str 正好重复 ……
人工神经网络的基本模型,神经网络解剖学模型图
神经网络是什么?
神经网络可以指向两种,一个是生物神经网络,一个是人工神经网络。生物神经网络:一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思……
VMware12虚拟机怎么下载安装?保姆级安装教程,让你一分钟学会
据了解还有很多人对于VMware12虚拟机不知道如何下载安装?对此今天歪瓜运营给大家带来VMware12的安装教程,让您掌握虚拟机安装技巧!有意向学习的朋友可以仔细阅读全文。 软件介绍
VMware(虚拟机)是指通过软件模拟的具有……
C-CPP 编程基础
STL 库描述内存中堆和栈的区别堆栈溢出一般是由什么原因导致的?sizeof 的作用C 面向对象特点多态的理解虚函数的理解动态绑定的理解C构造函数初始化时什么时候只能用初始化列表?C 构造函数和析构函数的初始化顺序全局变量和局部变量在内存中是否有区别&a……
初识 PyIntObject 对象
1. 初识 PyIntObject 对象
[intobject.h]
typedef struct {PyObject_HEADlong ob_ival;
} PyIntObject首先,PyIntObject是一个不可变(immutable)对象。其次,Python内部也大量的使用整数对象,我们在自己的代码中也会有……
学会这些终端快捷键,让你在Linux上的操作快100倍
🪶 简述 Linux命令行的许多快捷键与GNU/Emacs编辑器非常像,因此我十分建议可以学习学习emacs编辑器,来了解或发现更多的命令行快捷键。 点此访问emacs官网 点此访问emacs中国(论坛) 简述一下Emacs:Emacs’一切皆快捷键……
手把手教你Temporal Fusion Transformer——Pytorch实战
建立了一个关于能源需求预测的端到端项目: 如何为 TFT 格式准备我们的数据。 如何构建、训练和评估 TFT 模型。 如何获取对验证数据和样本外预测的预测。 如何使用built-in model的可解释注意力机制计算特征重要性、季节性模式和极端事件鲁棒性。
什么是Temporal F……
【Java开发】设计模式 12:解释器模式
1 解释器模式介绍
解释器模式是一种行为型设计模式,它提供了一种方法来解释语言、表达式或符号。
在该模式中,定义了一个表达式接口,并实现了对应的表达式类,这些类可以解释不同的符号组成的表达式,从而实现对语言的……
反序列化渗透与攻防五)之shiro反序列化漏洞
Shiro反序列化漏洞
Shiro介绍
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默……
vue2+vue3
vue2vue3尚硅谷vue2vue2 课程简介【02:24】vue2 Vue简介【17:59】vue2 Vue官网使用指南【14:07】vue2 搭建Vue开发环境【13:54】vue2 Hello小案例【22:25】了解: 不常用常用:id 更常用 简单class差值总结vue 实例vue 模板 : 先 取 ࿰……
【hello Linux】环境变量
目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……
【Linux基础】常用命令整理
ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……
客快物流大数据项目(一百一十二):初识Spring Cloud
文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…
C和C++中的struct有什么区别
区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的,……
docker的数据卷详解
数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……
编程日记2023/4/16 14:50:50