2024年最全Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?,java面试题中常见编程题

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

MySQL全家桶笔记

还有更多面试复习笔记分享如下

Java架构专题面试复习

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

五个功能分别是:

  • build-info:生成项目的构建信息文件 build-info.properties

  • repackage:这个是默认 goal,在 mvn package 执行之后,这个命令再次打包生成可执行的 jar,同时将 mvn package 生成的 jar 重命名为 *.origin

  • run:这个可以用来运行 Spring Boot 应用

  • start:这个在 mvn integration-test 阶段,进行 Spring Boot 应用生命周期的管理

  • stop:这个在 mvn integration-test 阶段,进行 Spring Boot 应用生命周期的管理

这里功能,默认情况下使用就是 repackage 功能,其他功能要使用,则需要开发者显式配置。

打包

=============================================================

repackage 功能的 作用,就是在打包的时候,多做一点额外的事情:

  1. 首先 mvn package 命令 对项目进行打包,打成一个 jar,这个 jar 就是一个普通的 jar,可以被其他项目依赖,但是不可以被执行

  2. repackage 命令,对第一步 打包成的 jar 进行再次打包,将之打成一个 可执行 jar ,通过将第一步打成的 jar 重命名为 *.original 文件

举个例子:

对任意一个 Spring Boot 项目进行打包,可以执行 mvn package 命令,也可以直接在 IDEA 中点击 package ,如下 :

打包成功之后, target 中的文件如下:

这里有两个文件,第一个 restful-0.0.1-SNAPSHOT.jar 表示打包成的可执行 jar ,第二个 restful-0.0.1-SNAPSHOT.jar.original 则是在打包过程中 ,被重命名的 jar,这是一个不可执行 jar,但是可以被其他项目依赖的 jar。通过对这两个文件的解压,我们可以看出这两者之间的差异。

两种 jar 的比较

=====================================================================

可执行 jar 解压之后,目录如下:

可以看到,可执行 jar 中,我们自己的代码是存在 于 BOOT-INF/classes/ 目录下,另外,还有一个 META-INF 的目录,该目录下有一个 MANIFEST.MF 文件,打开该文件,内容如下:

Manifest-Version: 1.0

Implementation-Title: restful

Implementation-Version: 0.0.1-SNAPSHOT

Start-Class: org.javaboy.restful.RestfulApplication

Spring-Boot-Classes: BOOT-INF/classes/

Spring-Boot-Lib: BOOT-INF/lib/

Build-Jdk-Spec: 1.8

Spring-Boot-Version: 2.1.6.RELEASE

Created-By: Maven Archiver 3.4.0

Main-Class: org.springframework.boot.loader.JarLauncher

可以看到,这里定义了一个 Start-Class,这就是可执行 jar 的入口类,Spring-Boot-Classes 表示我们自己代码编译后的位置,Spring-Boot-Lib 则表示项目依赖的 jar 的位置。

换句话说,如果自己要打一个可执行 jar 包的话,除了添加相关依赖之外,还需要配置 META-INF/MANIFEST.MF 文件。

这是可执行 jar 的结构,那么不可执行 jar 的结构呢?

我们首先将默认的后缀 .original 除去,然后给文件重命名,重命名完成,进行解压:

解压后可以看到,不可执行 jar 根目录就相当于我们的 classpath,解压之后,直接就能看到我们的代码,它也有 META-INF/MANIFEST.MF 文件,但是文件中没有定义启动类等。

Manifest-Version: 1.0

Implementation-Title: restful

Implementation-Version: 0.0.1-SNAPSHOT

Build-Jdk-Spec: 1.8

Created-By: Maven Archiver 3.4.0

注意

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】

程序员代码面试指南 IT名企算法与数据结构题目最优解

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

image.png

《TCP-IP协议组(第4版)》

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

image.png

Java开发手册(嵩山版)

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

image.png

MySQL 8从入门到精通

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

image.png

Spring5高级编程(第5版)

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

image.png

JAVA核心知识点+1000道 互联网Java工程师面试题

image.png

image.png

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

16)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我对 Spring Boot 面试题不太熟悉,但我可以尝试给出一些常见的建议,包括:了解 Spring Boot 基础概念,如自动配置,资源管理和配置概念;了解 Spring Boot 与其他框架的集;熟悉 Spring Boot 开发工具,如 Maven,Gradle 等;理解 Spring Boot 的运行机制;熟悉 Spring Boot 的安全配置,以及掌握 Spring Boot 的应用部署方式等。 ### 回答2: Spring Boot是一个用于创建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的配置和部署过程,帮助开发人员快速构建可运行的应用程序。 在面试可能会涉及到一些关于Spring Boot的问题,以下是一些常见的问题及其回答: 1. Spring Boot的优势是什么? Spring Boot的优势包括:简化了Spring应用程序的配置,自动装配各种依赖,提供了一个内嵌的Servlet容器(如Tomcat),简化了部署过程,提供了监控、管理和监控功能(如Actuator),提供了一种快速构建可运行应用程序的方式。 2. Spring Boot如何自动装配依赖Spring Boot使用了@EnableAutoConfiguration注解来开启自动装配的功能。它会根据项目依赖和配置来决定需要自动装配的组件和配置。 3. Spring Boot如何解析配置文件? Spring Boot使用了@ConfigurationProperties注解来解析配置文件。可以将配置文件和JavaBean映射起来,并通过@ConfigurationProperties注解将配置文件的属性值注入到JavaBean。 4. Spring Boot如何处理异常? Spring Boot使用了@ControllerAdvice注解和@ExceptionHandler注解来处理异常。可以通过定义全局异常处理器和针对特定异常的异常处理方法来处理异常。 5. Spring Boot如何实现热部署? Spring Boot支持使用devtools依赖来实现热部署。只需将devtools依赖添加到项目,并启动开发者模式,即可实现在代码改变后自动重启应用程序。 以上是对一些常见Spring Boot面试题的简要回答,希望能对您有所帮助。当然,还有更多关于Spring Boot的知识和问题需要深入学习和了解。 ### 回答3: Spring Boot是一种Java开发框架,它是基于Spring Framework的,但使用Spring Boot可以更快速、更简单地构建独立的、生产级别的Java应用程序。 首先,Spring Boot可以减少传统的Spring应用程序开发过程的繁琐配置。传统的Spring应用程序通常需要手动配置许多代码和配置文件来启用各种功能,而Spring Boot通过自动配置功能,大大简化了这个过程。开发人员只需要添加相应的依赖并进行少量的配置,就能快速地搭建起一个可用的Spring应用程序。 其次,Spring Boot提供了内嵌的应用服务器。传统的Spring应用程序通常需要结合使用外部的应用服务器,如Tomcat或Jetty等。而Spring Boot则将Web服务器内嵌到应用程序,开发人员无需额外安装和配置外部服务器,只需将应用程序打包并运行即可。 再者,Spring Boot提供了可执行打包文件。开发人员可以将Spring Boot应用程序打包一个可执行JAR文件,然后通过Java命令或者通过脚本运行,这样可以方便地部署和运行应用程序。 此外,Spring Boot还提供了丰富的插件和扩展。开发人员可以通过使用Spring Boot Starter插件来快速集其他常用的框架和库,如MyBatis、Hibernate、Redis等,减少了集这些组件的复杂性。 最后,Spring Boot还提供了强大的监测和健康检查功能。开发人员可以通过Actuator模块来监测应用程序的运行状态、性能指标等,并提供了RESTful接口来访问这些信息,方便进行监测和运维。 总的来说,Spring Boot是一个简化了Spring应用程序开发过程的框架,它提供了自动配置、内嵌服务器、可执行打包文件、丰富的插件和扩展等功能,使得Java应用程序的开发和部署更加便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值