使用Spring Initializr构建Spring Boot详解

简介: 本文目录1. 构建项目2. 使用Spring Initializr构建项目3. 导入项目4. 项目结构分析5. 项目如何运行的详解5.1 pom.xml分析5.2 SpringBootHelloApplication.java分析5.3 神奇的@SpringBootApplication注解6. 总结

兄弟们,学习SpringBoot不能光说不练,下面是第一个案例,让我们了解下SpringBoot是怎么运行起来的吧。

1. 构建项目

SpringBoot项目可以基于maven构建的,实际上maven是一个Java项目的外挂,当使用maven之后,项目的构建、编译、运行都交给这个外挂管理了,但是也要符合maven对项目结构等方面规范要求。


maven就像一个应用生产的流水线,按规矩来,可以快速批量生产标准应用。


所以基于maven构建的SpringBoot应用,那也是标准件,所以Spring官方也提供了标准件的生产工具,通过该工具可以直接生成一个SpringBoot应用,我们直接导入开发工具(eclipse或idea或其他工具)使用即可,省的一步步配置麻烦,反正都是按maven规范定好的项目结构。


OK,这个可以直接生成SpringBoot的工具就是Spring Initializr啦。


2. 使用Spring Initializr构建项目

打开网址:Spring Initialize网址,按如下图生成一个项目:

image.png

3. 导入项目

maven项目的结构都是确定的,然后maven会根据pom.xml配置自动导入相应的jar包,并自动帮我们构建项目,我们只需要运行项目即可,就是这么舒心。


在eclipse中,直接点击File-Import-Existing Maven Projects,选中刚刚下载后解压的文件夹导入即可。

image.png

4. 项目结构分析

image.png

我们一一具体分析下项目结构中每一部分的作用


spring-boot-hello :项目名称

--src/man/java:java源代码

--src/main/resources:配置文件、图片、网页等静态资源

----application/properties:项目配置文件,配置项目访问路径、启动端口等信息

--src/test/java:测试代码

--target:项目编译打包后存储位置

--pom.xml:maven配置文件,用于配置jar包依赖及项目构建所需信息


5. 项目如何运行的详解

5.1 pom.xml分析

既然是maven管理的,就得看maven是怎么把这个项目跑起来的,首先maven先看配置文件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.2.4.RELEASE</version>

 <relativePath/> <!-- lookup parent from repository -->

</parent>

<groupId>com.forwhatsogood</groupId>

<artifactId>spring-boot-hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>spring-boot-hello</name>

<description>Demo project for Spring Boot</description>


<properties>

 <java.version>1.8</java.version>

</properties>


<dependencies>

 <dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter</artifactId>

 </dependency>


 <dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-test</artifactId>

  <scope>test</scope>

  <exclusions>

   <exclusion>

    <groupId>org.junit.vintage</groupId>

    <artifactId>junit-vintage-engine</artifactId>

   </exclusion>

  </exclusions>

 </dependency>

</dependencies>


<build>

 <plugins>

  <plugin>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-maven-plugin</artifactId>

  </plugin>

 </plugins>

</build>


</project>


首先看到parent标签内容如下,这说明该项目是一个2.2.4.RELEASE版本的SpringBoot项目。


<parent>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-parent</artifactId>

 <version>2.2.4.RELEASE</version>

 <relativePath/> <!-- lookup parent from repository -->

</parent>


然后看下项目标志信息部分如下,说明了该maven项目所属的机构groupId,项目名称name,还有maven标志名artifactId,也就是说规定了该项目的身份信息,以便于被其他项目定位调用使用什么的。


<groupId>com.forwhatsogood</groupId>

<artifactId>spring-boot-hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>spring-boot-hello</name>

<description>Demo project for Spring Boot</description>


然后看下依赖定义如下,此处定义了需要引入的jar包功能,我们看到springboot中jar引入大多通过spring-boot-starter-xxx这种方式,实际上spring-boot-starter-xxx整合了很多包,例如spring-boot-starter-test整合了许多单元测试相关的内容,我们不需要关心,只需要根据需要引入spring-boot-starter-xxx即可。


<dependencies>

 <dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter</artifactId>

 </dependency>


 <dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-test</artifactId>

  <scope>test</scope>

  <exclusions>

   <exclusion>

    <groupId>org.junit.vintage</groupId>

    <artifactId>junit-vintage-engine</artifactId>

   </exclusion>

  </exclusions>

 </dependency>

</dependencies>



然后看下插件部分,spring-boot-maven-plugin非常厉害,能将项目打包为jar或者war应用,而且可以执行SpringBoot应用。


<build>

 <plugins>

  <plugin>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-maven-plugin</artifactId>

  </plugin>

 </plugins>

</build>


5.2 SpringBootHelloApplication.java分析

好的,通过上面的配置文件,maven了解了构建本项目需要的基本信息,所以当我们运行SpringBootHelloApplication类时,maven实际上已经将需要的jar引入,并按照配置为了我们做好需要的运行环境了,我们需要做的只是进入SpringBootHelloApplication类,然后点击运行,整个项目就启动了,简直是不能再简单了!

image.png

就是这么简单啊,对比下要配置一个Spring应用,我第一次用SpringBoot的时候,感觉简直爽快到飞起了,下面我们看看代码到底是咋启动的:


@SpringBootApplication

public class SpringBootHelloApplication {

public static void main(String[] args) {

 SpringApplication.run(SpringBootHelloApplication.class, args);

}

}

1

2

3

4

5

6

说实话,看到这段代码,太平庸了,就是一个main方法,然后SpringApplication.run表示启动程序,启动改程序需要的参数是SpringBootHelloApplication.class和args,很显然,args是启动参数,我们啥也没设置,所以真正的内涵都在SpringBootHelloApplication.class这个类里面。


然后我们自信看下这个类,就是光秃秃的一个普通类嘛,搞不懂为啥这么牛能启动大名鼎鼎的SpringBoot,等等,好像这个类有一个注解@SpringBootApplication,这个注解是唯一跟我们之前普通类不同的地方,看来所有的窍门都在这个注解上。


5.3 神奇的@SpringBootApplication注解

刚刚我们分析了,SpringBoot启动时,有用的参数也就SpringBootHelloApplication.class,也是就是SpringBootHelloApplication类信息。


该类平平无奇,就是有个注解SpringBootHelloApplication,我们来看看这个注解到底是啥:

image.png

哈哈,终于抓到重点了,看看这个注解,包含了以下注解


@SpringBootConfiguration

@EnableAutoConfiguration

@ComponetScan


这几个很眼熟啊,看到这几个注解,我就基本明白咋回事了。


首先@SpringBootConfiguration,看到Configuration这是个Spring配置类,也就是说本类会被Spring容器管理,并加载里面的配置信息,比如bean定义等,此处虽然啥也没定义,但是现在已经有Spring容器啦。


其次,@EnableAutoConfiguration,这个是启动自动配置的意思,啥是自动配置,就是把所有配置类都加载到容器,比如项目中有多个@Configuraion,统统纳入Spring管理,这样项目中所有的配置、bean定义都可以在容器中管理啦。


最后,@ComponetScan,制定了扫描包的范围,当然配置类很多,也不能不分你我统统都用了,可以通过该注解指定扫描的包的范围。注意默认情况下,就是不写参数的情况下,SpringBoot会扫描@SpringBootApplication注解的类所在的包及其子包。


6. 总结

哈哈,到这就很清晰了,首先maven通过pom.xml的配置,为项目的启动奠定了编译基础。


然后当我们启动时,通过@SpringBootApplication注解,启动了Spring容器,并将符合扫描范围的配置类及bean统统纳入了容器管理。


看明白了,就是通过注解整合和自动配置,将之前啰里啰嗦的各类配置自动化了,完事。


所以只要对Spring技术很熟悉,只要稍微了解下SpringBoot的结构,就能上手了,就这么简答。

相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
48 4
|
2月前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
63 3
|
28天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
100 62
|
1天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
19 5
|
26天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
15天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
28 2
|
20天前
|
Java
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
37 2
|
26天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
45 2
|
2月前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
139 6
|
2月前
|
文字识别 安全 Java
SpringBoot3.x和OCR构建车牌识别系统
本文介绍了一个基于Java SpringBoot3.x框架的车牌识别系统,详细阐述了系统的设计目标、需求分析及其实现过程。利用Tesseract OCR库和OpenCV库,实现了车牌图片的识别与处理,确保系统的高准确性和稳定性。文中还提供了具体的代码示例,展示了如何构建和优化车牌识别服务,以及如何处理特殊和异常车牌。通过实际应用案例,帮助读者理解和应用这一解决方案。