Spring与SpringBoot的概念与区别
在还未学习Java前,我就听说过Spring和SpringBoot的词眼了,但这俩名字长这么像,我一直没搞懂它们的关系,现在也还没搞懂,因为目前课程学习的只是对它们的应用,还未涉及到它们的底层。这里我只能笼统得说SpringBoot是基于Spring的一个扩展框架,自动化程度更高,开发工作量更少。
Spring的概念
Spring是一个面向企业应用的开源框架,可以帮助开发者构建复杂的Java应用程序。它提供了诸如
IoC(Inversion of Control 即控制反转(一种设计模式))、
AOP(Aspect Oriented Programming 即面对切面编程(一种编程范式))、
MVC(Model-View-Controller 即模型-视图-控制器(一种设计模式))等特性,
可以与其他框架和技术(如Hibernate、MyBatis、JPA、JMS等)集成,以支持Java应用程序的各种需求。Spring的核心是Spring Framework,它包含了多个模块,每个模块都可以独立使用,也可以组合使用。Spring甚至可以使用在非Web应用场景下,例如命令行应用程序。
这些特性以及技术框架会在以后逐个接触,现在我也解释不明白
SpringBoot的概念
SpringBoot是一个基于Spring Framework的快速开发框架,它采用“约定优于配置”的理念,提供了自动配置、启动器、嵌入式服务器等特性,可以让开发者更快速地搭建和部署应用程序。SpringBoot可以帮助开发者快速搭建Web应用程序和微服务框架。与Spring Framework相比,SpringBoot的特点是“简单易用、快速开发”。
区别
Spring需要手动配置,SpringBoot自动配置。
Spring需要开发者配置很多组件来完成一些特定的任务,SpringBoot已经集成了这些组件,只需要少量的配置即可。
Spring可以使用在非Web应用场景下,如命令行应用程序,SpringBoot是Web应用程序和微服务框架。
SpringBoot是Spring的一种扩展,可以加速Spring的开发效率。
SpringBoot运行Hello World的案例
Spring框架是IDEA自带的,不用配置,这里建议直接上IDEA专业版,如果是社区的话它这个Spring还要各种插件下载,有那点时间我都把专业版给那个啥了。反正之后很多功能都是专业版更占优势,之前用社区版的IDEA在Web项目里配置Tomcat废了我老半天时间。
打开IDEA创建新项目
File>>new project>>进入到了以下界面
注意这里的Java要根据自己安装的JDK版本去选择,我反正用的是最老的JDK1.8的。现在市面上流行的还有11,17这些版本。
然后点击Next会进入下一个界面。
勾选上SpringWeb选项,这里的SpringBoot版本我选的是默认里最低的,因为我用的是比较老的JDK,如果要进行更高版本的SpringBoot需要更高的JDK版本,不然可能会出现奇怪的报错。我是从B站弹幕上听说的。
点击Create后会来到正式的项目界面,它会默认打开Help文件,md应该就是MarkDown的意思,但说实话我是没觉得它有什么用,就是给了一堆超链接,我用点超链接的功夫多读几篇博客都舒服点。
我们再来看一下项目的目录界面,这一堆被选中的(即蓝色背景的都可以删去,虽然我不知道它们有什么用,但对于现在还没入门的我肯定是一点用都没有),老师说删除这些文件并不会影响项目的运行。
再来看一下pom.xml配置文件的内容`
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 父工程的信息,可选 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.15</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 项目的坐标和版本信息 -->
<groupId>com.example</groupId>
<artifactId>spring-helloworld-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-helloworld-demo</name>
<description>spring-helloworld-demo</description>
<!-- JDK版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 项目的依赖管理 -->
<dependencies>
<!-- Spring Boot Starter 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter 测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 构建的配置 -->
<build>
<!-- Maven 编译插件 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<ModelVersion>4.0.0</modelVersion>
:指定了POM文件的模型版本。
<groupId>com.example</groupId>
:指定了项目的组织唯一标识符(通常使用逆序的域名)。
<artifactId>my-springboot-project</artifactId>
:指定了项目的Artifact ID,即项目的名称。
<version>1.0.0</version>
:指定了项目的版本号。
<parent>
:指定了父工程的坐标信息,即所使用的Spring Boot版
<dependencies>
:定义了项目的依赖项。在这个示例中,spring-boot-starter-web是一个Spring Boot Starter,它包含了用于构建Web应用程序的基本依赖。
<build>
:定义了项目的构建配置。在这个示例中,使用了spring-boot-maven-plugin插件来构建Spring Boot项目。
然后在java文件夹下面那个软件包创建一个Controller包,这个软件包与SpringBoot启动类同级,再在下面Controller包里创建一个Controller类。
这里用的是我之前的项目,所以包名并不是上面创建的项目所包含的包名。
代码(这里面老师强调注解才是最重要的,我在学Javase时好像没看过这些注解,当然框架大势所趋就是面向注解面向配置编程):
package com.mydemo.springboothelloword.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//请求处理类
@RestController
public class Controller {
@RequestMapping("/hello")//请求路径
public String hello(){
System.out.println("Hello World!");
return "Hello World!";
}
}
然后就可以进行运行了。第三行告诉了用户在哪个端口启动,一般默认是8080。
进入浏览器里验证一下
完事!!!
小彩蛋
前面我们看到启动程序时会有Spring Logo的出现
其实我们也可以换成自己想要图案:
只需要在resource目录下创建banner.txt文件,然后自己在里面用符号画就是了,但是不知道支不支持特殊符号。
再次运行
成功了,拜拜O(∩_∩)O哈哈~