摘抄自 https://www.liaoxuefeng.com/wiki/1252599548343744/1266265175882464,个人学习笔记,仅作分享。
为了创建一个可执行的 jar,我们需要在 pom.xml
中添加 spring-boot-maven-plugin
插件。在 pom.xml
的 dependencies
节点下面插入以下几行。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
学习的参考教程:https://springdoc.cn/spring-boot/getting-started.html
安装
这里在 maven 空项目的基础上进行操作。
项目创建之后,修改为如下的 pom.xml
文件
|
|
其中
spring-boot-starter-parent
首先,该项被放在了 parent
标签中,parent 标签用于在一个子模块项目中引用一个父模块项目。在这里用于导入一些配置。
例如
- 依赖管理: 它提供了默认的依赖版本,比如 Spring Boot 的相关组件和其他常用库。这样,你在添加依赖时不需要指定版本号,Maven 会自动使用 spring-boot-starter-parent 中定义的版本。 - 构建配置: 它设置了编译器插件的默认配置,例如 Java 版本(maven.compiler.source 和 maven.compiler.target)。在这里,版本被设置为 17。 提供了项目构建的默认属性,如源代码和目标文件的字符编码(project.build.sourceEncoding)。 - 插件管理: 父 POM 包含了常用的 Maven 插件及其配置,如 Spring Boot 的 spring-boot-maven-plugin 用于打包可执行的 JAR 或 WAR 文件。 这样可以避免在每个子模块中重复定义插件及其配置。 - 约定优于配置: Spring Boot 通过 spring-boot-starter-parent 引入了一套约定,使得项目的结构和配置更加规范,简化了新项目的创建和维护。 - 版本升级: 当 Spring Boot 发布新版本时,只需更新 spring-boot-starter-parent 的版本号,即可将整个项目升级到最新稳定版本,确保所有依赖都与 Spring Boot 版本兼容。spring-boot-starter-web
这是 spring web 的具体依赖,这里不需要写版本号,因为 spring-boot-starter-parent 会为其他依赖项自动配置版本号。
这个 starter 提供了 springweb, springmvc, jackson, tomcat 等 web 开发需要的依赖。配置这一个 starter,就可以把这些依赖都配置好。提高开发效率。
使用
mvn dependency:tree
可以看到当前项目有哪一些依赖
编写代码
|
|
一个基本的 springweb 程序,允许 main 方法即可开启一个 tomcat 服务器。
@RestController
该注解用于定义一个控制器,该控制器的所有方法都默认返回 JSON 或 XML 等格式的响应。
@RestController 注解结合了@Controller 和@ResponseBody 两个注解,所以你不需要在每个方法上都添加@ResponseBody 注解。
@SpringBootApplication
@SpringBootApplication 是一个方便的注解,它包含了以下三个注解:
- @Configuration:标记类为应用程序上下文的 Bean 定义的源。
- @EnableAutoConfiguration:告诉 Spring Boot 根据类路径设置,其他 bean 和各种属性设置开始添加 bean。
- @ComponentScan:告诉 Spring 在包中查找其他组件,配置和服务,让它找到@Controller,@Service 等类。
所以,当你在主类上使用@SpringBootApplication 注解时,你实际上是在声明一个配置类,启用自动配置,以及启用组件扫描。这就是为什么你的应用程序能够启动并运行,因为所有的事情都被自动配置了。
tomcat
这是因为 Spring Boot 的设计理念。Spring Boot 提供了一个嵌入式的 Servlet 容器(如 Tomcat),这样可以使得开发者无需单独安装和部署 Servlet 容器就能运行 Web 应用。
在你的 pom.xml
文件中,你已经添加了spring-boot-starter-web
依赖,这个依赖包含了 Spring MVC 和 Tomcat,因此当你运行 main 方法时,Spring Boot 会自动配置并启动一个 Tomcat 服务器。
具体来说,当你运行SpringApplication.run(MyApplication.class, args);
这行代码时,Spring Boot 会做以下事情:
- 创建一个 Spring 应用上下文
- 注册一个 CommandLinePropertySource,以便将命令行参数作为 Spring 属性
- 刷新应用上下文,加载所有单例 beans
- 启动所有 CommandLineRunner beans
在这个过程中,Spring Boot 会检测到 classpath 中的 Tomcat 依赖,并自动配置和启动 Tomcat 服务器。
“main”方法
我们应用程序的最后部分是 main
方法。这是一个标准的 Java 入口方法,也就是应用的启动方法。我们的 main 方法通过调用 run
方法,把应用委托给 Spring Boot 的 SpringApplication
类。SpringApplication
引导我们的应用程序启动 Spring,而 Spring 又会启动自动配置的 Tomcat 网络服务器。我们需要将 MyApplication.class
作为参数传递给 run
方法,以告诉 SpringApplication
哪个是要的 Spring 组件。args
数组也被传入,这是命令行参数。
运行
maven
mvn spring-boot:run
创建一个可执行 Jar
为了创建一个可执行的 jar,我们需要在 pom.xml
中添加 spring-boot-maven-plugin
插件。在 pom.xml
的 dependencies
节点下面插入以下几行。
|
|
这样做的目的是让 maven 能够打包出一个带有 tomcat 的 jar 文件