每天debug/run一键启动的Spring Boot控制台启动日志,你了解过吗?

news2024/11/20 4:56:04

文章目录

      • 前言
      • JDK执行Spring Boot应用的启动命令
      • Spring Boot本身启动时的日志
      • 总结

在这里插入图片描述

前言

每次打开Idea点击debug/run启动SpringBoot项目时,都在坐等启动成功的最后一行日志,然而对于启动过程中,控制台里面的每一行日志代表什么?你可能从来没去管他!是的,曾经我也是这样的,然而今天对此引起了我的好奇心。。。

接下来,随着跟我一探究竟Spring Boot启动日志的真相!

......
2023-10-15 15:29:39.725 [main] INFO  com.apple.LogApplication - Started LogApplication in 8.245 seconds (JVM running for 10.544) 

启动日志可以分为两部分

1、JDK执行Spring Boot应用的启动命令

2、Spring Boot本身启动时的日志

JDK执行Spring Boot应用的启动命令

每次启动时,最前面都会有一个:E:\DevSoftware\JDK\bin\java.exe...

这里都会默认省略后面的内容在控制台展示,你是否有点开过这个内容?

另外我们有时候,IDEA启动报错:Command line is too long?

在使用IntelliJ IDEA启动项目时,如果出现“Command line is too long”的错误提示,一般是因为命令行参数过长导致的。这种错误一般是由于在项目中引入了大量的第三方包或者配置了大量的VM参数导致的。

其实就是省略号里面的内容太长了导致的。

image-20231015155104492

E:\DevSoftware\JDK\bin\java.exe 

-XX:TieredStopAtLevel=1 -noverify
-Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote
-Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain
-Dspring.application.admin.enabled=true
"-javaagent:E:\DevSoftware\IntelliJ IDEA
2022.2.2\lib\idea_rt.jar=50579:E:\DevSoftware\IntelliJ IDEA2022.2.2\bin" 
-Dfile.encoding=UTF-8 

-classpath
E:\DevSoftware\JDK\jre\lib\charsets.jar;E:\DevSoftware\JDK\jre\lib\deploy.jar;E:\DevSoftware\JDK\jre\lib\ext\access-bridge-64.jar....
E:\IdeaPro\springboot_study\springboot_log\target\classes;......
com.apple.LogApplication
```
这是通过Java命令启动应用程序的命令,其中包含了一些JVM参数和启动参数。
  1. 使用E:\DevSoftware\JDK\bin\java.exe命令调用Java虚拟机(JVM)来运行应用程序。
  2. 设置JVM参数:
    • -XX:TieredStopAtLevel=1:在第一层停止分层编译。
    • -noverify:禁用字节码验证。
    • -Dspring.output.ansi.enabled=always:启用ANSI输出。
    • -Dcom.sun.management.jmxremote:启用JMX远程管理。
    • -Dspring.jmx.enabled=true:启用Spring的JMX支持。
    • -Dspring.liveBeansView.mbeanDomain:设置MBean的域。
    • -Dspring.application.admin.enabled=true:启用Spring应用程序管理。
    • -javaagent:E:\DevSoftware\IntelliJ IDEA 2022.2.2\lib\idea_rt.jar=50579:E:\DevSoftware\IntelliJ IDEA 2022.2.2\bin:使用IntelliJ IDEA的代理配置**(平常我们破解Idea的jar包就是通过类似的方式)**
    • -Dfile.encoding=UTF-8:设置文件编码为UTF-8。
  3. 设置类路径(classpath):
    • 列出了多个JAR文件和目录,其中包括JDK和其他第三方库以及应用程序的类路径。
    • 这些路径包括了各种Spring Boot依赖项和应用程序本身的类文件。
    • 指定了应用程序的入口类,即E:\IdeaPro\springboot_study\springboot_transaction\target\classes
    • 最后指定启动的Main类为com.apple.TransactionApplication

Spring Boot本身启动时的日志

注意,我这里是采用Spring Boot整合Mybatis+Druid数据源的启动日志流程,其他会有所差异,但是大体流程类似

image-20231015155214739

这段日志大致分为以下几个流程步骤:

  1. 应用启动开始,显示应用的基本信息。
  2. 检测并设置活动的配置文件,默认使用"default"配置文件。
  3. 创建Spring的WebApplicationContext。
  4. 初始化Tomcat Web服务器,并设定端口号为8080。
  5. 启动Tomcat服务。
  6. 初始化Spring的Servlet引擎,使用Apache Tomcat 8.5.29。
  7. 检测并注册ContextLoader用于加载和初始化根WebApplicationContext。
  8. 注册Servlet dispatcherServlet处理请求的映射。
  9. 注册Servlet statViewServlet用于管理Druid数据源的统计信息。
  10. 注册各类过滤器,如字符编码过滤器、请求方法过滤器等。
  11. 使用MyBatis的StdOutImpl初始化日志记录器。
  12. 初始化DruidDataSource数据源。
  13. 解析并处理数据库映射文件。
  14. 配置/favicon.ico的请求路径。
  15. 查找并加载@ControllerAdvice,用于全局异常处理和其他全局控制逻辑。
  16. 配置@RequestMapping处理器以处理请求映射关系。
  17. 配置静态资源和/**处理器。
  18. 启动JMX服务器,为Beans注册JMX暴露。
  19. TomcatWeb服务器启动完成,应用已成功启动。

以上是根据日志信息大致的步骤,每个Spring Boot应用启动的具体步骤可能会略有差异。

接下来根据我上面的日志信息一行行解析

接下来根据我上面的日志信息一行行解析

接下来根据我上面的日志信息一行行解析

1、应用启动开始,显示应用的基本信息:比如你的本机运行Spring Boot的PID进程号、你的主机名、当前用户、以及SpringBoot工作空间位于E盘的具体路径

2023-10-15 15:45:26.679  INFO 13020 --- [           main] com.apple.TransactionApplication         : Starting TransactionApplication on Lenvo-PC with PID 13020 (E:\IdeaPro\springboot_study\springboot_transaction\target\classes started by apple in E:\IdeaPro\springboot_study)

2、检测并设置活动的配置文件,默认使用"default"配置文件。

2023-10-15 15:45:26.682  INFO 13020 --- [           main] com.apple.TransactionApplication         : No active profile set, falling back to default profiles: default

3、创建Spring的WebApplicationContext。

2023-10-15 15:45:26.729  INFO 13020 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7b9a4292: startup date [Sun Oct 15 15:45:26 CST 2023]; root of context hierarchy

4、初始化Tomcat Web服务器,并设定端口号为8080。

2023-10-15 15:45:27.615  INFO 13020 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)

5、启动Tomcat服务。

2023-10-15 15:45:27.628  INFO 13020 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]

6、初始化Spring的Servlet引擎,使用Apache Tomcat 8.5.29。

2023-10-15 15:45:27.628  INFO 13020 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.29

紧接着下面这里有个这个日志信息:

2023-10-15 15:45:27.632  INFO 13020 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [E:\DevSoftware\JDK\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;E:\DevSoftware\Git\Git\cmd;........省略

  • 这个信息表示在启动Apache Tomcat时,缺少了用于提高生产环境性能的APR(Apache Portable Runtime)库。日志指示在Java库文件搜索路径(java.library.path)中未找到APR库的位置。
  • APR库是一种用于提供高性能原生功能的库,通常与Tomcat一起使用以提高性能。它允许Tomcat在处理网络请求时通过C语言调用本机代码,这样可以更高效地处理请求并提高性能。
  • 缺少APR库并不会阻止Tomcat的正常启动和运行,只是在没有APR库的情况下,可能会在处理网络请求时性能有所下降。如果需要使用APR库以获得更好的性能,可以按照相关文档的指引进行安装和配置。否则,可以忽略此警告信息。

7、检测并注册ContextLoader用于加载和初始化根WebApplicationContext。

2023-10-15 15:45:27.685  INFO 13020 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-10-15 15:45:27.685  INFO 13020 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 956 ms

8、注册Servlet dispatcherServlet处理请求的映射。

2023-10-15 15:45:27.785  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]

9、注册Servlet statViewServlet用于管理Druid数据源的统计信息。

2023-10-15 15:45:27.785  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet statViewServlet mapped to [/druid/*]

10、注册各类过滤器,如字符编码过滤器、请求方法过滤器等。

2023-10-15 15:45:27.788  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2023-10-15 15:45:27.788  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2023-10-15 15:45:27.788  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2023-10-15 15:45:27.788  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2023-10-15 15:45:27.788  INFO 13020 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'webStatFilter' to urls: [/*]

11、使用MyBatis的StdOutImpl初始化日志记录器。

Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.

12、初始化DruidDataSource数据源。

2023-10-15 15:45:27.874  INFO 13020 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource

13、解析并处理数据库映射文件。

2023-10-15 15:45:28.740  INFO 13020 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
Parsed mapper file: 'file [E:\IdeaPro\springboot_study\springboot_transaction\target\classes\mapper\MyUserMapper.xml]'

14、配置/favicon.ico的请求路径。

2023-10-15 15:45:28.996  INFO 13020 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

15、查找并加载@ControllerAdvice,用于全局异常处理和其他全局控制逻辑。

2023-10-15 15:45:29.187  INFO 13020 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7b9a4292: startup date [Sun Oct 15 15:45:26 CST 2023]; root of context hierarchy

16、配置@RequestMapping处理器以处理请求映射关系。

2023-10-15 15:45:29.235  INFO 13020 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/t1]}" onto public java.lang.String com.apple.transaction.dbreturn.TestController3.test()
2023-10-15 15:45:29.235  INFO 13020 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/t2]}" onto public java.lang.String com.apple.transaction.dbreturn.TestController3.test2()
2023-10-15 15:45:29.236  INFO 13020 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/t4]}" onto public java.lang.String com.apple.transaction.dbreturn.TestController3.test3()
.....
2023-10-15 15:45:29.247  INFO 13020 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2023-10-15 15:45:29.248  INFO 13020 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2023-10-15 15:45:29.269  INFO 13020 --- [           main] o.s.w.s.h.BeanNameUrlHandlerMapping      : Mapped URL path [/len] onto handler '/len'


17、配置静态资源和/**处理器:将URL路径/webjars/**映射到类型为ResourceHttpRequestHandler的处理程序,用于处理静态资源。

  • /**这表示Spring框架的SimpleUrlHandlerMapping将URL路径/**(除了之前映射的路径)映射到处理静态资源的ResourceHttpRequestHandler处理程序。
2023-10-15 15:45:29.276  INFO 13020 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2023-10-15 15:45:29.276  INFO 13020 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

18、启动JMX服务器,为Beans注册JMX暴露:

  • 名为statFilter的Bean已被自动检测到,将进行JMX暴露。
  • 名为dataSource的Bean已被自动检测到,将进行JMX暴露。
2023-10-15 15:45:29.500  INFO 13020 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2023-10-15 15:45:29.502  INFO 13020 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'statFilter' has been autodetected for JMX exposure
2023-10-15 15:45:29.502  INFO 13020 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'dataSource' has been autodetected for JMX exposure
2023-10-15 15:45:29.507  INFO 13020 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper]
2023-10-15 15:45:29.508  INFO 13020 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter]

19、TomcatWeb服务器启动完成,应用已成功启动:

  • Tomcat服务器已启动,监听8080端口,上下文路径为空:也就是不需要再加应用名访问对应的controller(正常是localhost:8080/应用名/…)

  • 应用启动完成,花费了3.195秒。随后的提醒表示JVM从启动后已经运行了4.014秒。

2023-10-15 15:45:29.540  INFO 13020 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-10-15 15:45:29.544  INFO 13020 --- [           main] com.apple.TransactionApplication         : Started TransactionApplication in 3.195 seconds (JVM running for 4.014)

总结

我们在日常开发过程中,还是要保持一点好奇心,跟随着这份好奇心,去慢慢探索、学习积累,坚持下来,相信定会有所质变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文学习——FALL-E:GAUDIO FOLEY SYNTHESIS SYSTEM

文章目录 引言正文AbstractIntroduction介绍问题 FALL-E2.1 Architexture结构2.2 Training and Inference Details 3 Evaluation And Analysis测试和分析Conlusion 总结 引言 这篇文章是DCASE中少有的&#xff0c;没有使用DIffusion的方法&#xff0c;可以学习一下。这篇文章的…

『C++之STL』双端队列 - deque

前言 双端队列,Double-ended queue,简称为deque是一种线性结构的一种容器; 在数据结构中出现的顺序表与链表,或者栈与队列都算是线性结构; 在结构中,它与vector相比较会相似一些; 但是在实际当中,双端队列 - deque 包含了vector与list的优点; vector(顺序表) 支持随机访问,空…

cuda12+vs2019环境搭建 发疯实录

点击exe文件后开始安装&#xff08;注意更改默认安装的位置&#xff09; 在选项阶段&#xff0c;全选所有的选项 出现的问题&#xff0c;这里显示未安装 进一步地查看原因 可能式对应的版本下载错误 如何寻找到所需要的版本并进行下载&#xff1f; 在上述参考链接中进行搜…

阿里云韩国服务器测试IP地址及公网带宽收费价格表

阿里云服务器韩国&#xff08;首尔&#xff09;地域公网带宽价格表&#xff0c;1M带宽价格是23.0元/月&#xff0c;按使用流量1GB价格是0.8元&#xff0c;阿里云韩国服务器测试IP地址&#xff1a;149.129.12.20&#xff0c;阿里云百科aliyunbaike.com来详细说下阿里云韩国服务器…

mybatis用拦截器实现字段加解密

前言 根据公司业务需要&#xff0c;灵活对客户敏感信息进行加解密&#xff0c;这里采用mybatis拦截器进行简单实现个demo。 拦截器的使用 // 执行 Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) // 请求参数处理 Paramete…

基于蛾群优化的BP神经网络(分类应用) - 附代码

基于蛾群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于蛾群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蛾群优化BP神经网络3.1 BP神经网络参数设置3.2 蛾群算法应用 4.测试结果&#xff1a;5.M…

常用的数字格式代码

文章目录 数值占位符文本占位符 两类占位符: 数值占位符, 文本占位符. 数值占位符 有三种&#xff1a;0&#xff0c;#&#xff0c;&#xff1f; 0 是强制的占位符。 文本占位符 文本占位符只有一个&#xff1a; : 作用于文本的占位符&#xff0c;可以用英文引号" &quo…

DirectX绘制流水线

使用DirectX可以让在Windows平台上运行的游戏或多媒体程序获得更高的执行效率&#xff0c;掌握DirectX的基本概念和技术是虚拟现实技术、计算机仿真和3D游戏程序开发的基础。 DirectX概述 DirectX是微软的一个多媒体应用编程接口(API)工具包&#xff0c;用于为Windows操作系统…

Qt QMovie和QLabel配合播放GIF表情包

文章目录 效果演示main函数创建MoviePlayer对象头文件movieplayer.h源文件movieplayer.cpp代码解释在Qt框架中,QMovie是用于处理动画和视频的类。所有源码已在本篇文章公布。 效果演示 main函数创建MoviePlayer对象 #include <QApplication>#include "movie

JAVAEE初阶相关内容第十三弹--文件操作 IO

写在前 终于完成了&#xff01;&#xff01;&#xff01;&#xff01;内容不多就是本人太拖拉&#xff01; 这里主要介绍文件input&#xff0c;output操作。File类&#xff0c;流对象&#xff08;分为字节流、字符流&#xff09; 需要掌握每个流对象的使用方式&#xff1a;打…

MySQL jdbc,事务,连接池

​​​ 3-MySQL jdbc,事务,连接 1 jdbc 1.1 jdbc概述# JDBC&#xff08;Java DataBase Connectivity,java数据库连接技术&#xff09;是一种用于执行SQL语句的Java API。 JDBC是Java访问数据库的标准规范&#xff0c;可以为不同的关系型数据库提供统一访问&#xff0c;它由一…

php对接微信支付简要流程?面试时你会描述吗?

一、微信支付申请&#xff1a;微信公众号平台-->功能中找到微信支付-->申请接入 1.如果没有微信支付商会号&#xff0c;需要进行申请 提交营业执照、身份证、银行账户 2.如果有微信支付商会号 可进行直接关联 登录微信商户平台—产品中心—APPID授权管理—新增授权申…

视频编辑软件 Premiere Pro 2024 macv24.0中文版 (pr2024)

Premiere Pro 2024 mac编辑任何现代格式的素材&#xff0c;从8K到虚拟现实。广泛的原生文件支持和简单的代理工作流程可以轻松使用您的媒体&#xff0c;即使在移动工作站上也是如此。提供针对任何屏幕或平台优化的内容比以往任何时候都快。 Premiere Pro 2024 Mac版软件介绍 视…

深度强化学习 第 2 章 蒙特卡洛

2.1随机变量 强化学习中会经常用到两个概念&#xff1a; 随机变量、 观测值。 本书用大写字母表示随机变量&#xff0c;小写字母表示观测值&#xff0c;避免造成混淆。 下面我们定义概率质量函数&#xff08;probability mass function&#xff0c;缩写 PMF&#xff09;和概率…

SpringBoot面试题5:SpringBoot Starter的工作原理是什么?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:SpringBoot Starter的工作原理是什么? Spring Boot Starter 是一种便捷的方式来为 Spring Boot 应用程序引入一组特定功能的依赖项。它简化了项目…

【Java并发】聊聊LongAdder应用场景及其原理

应用场景 我们知道在实际的应用场景中&#xff0c;可能会对某个商品进行浏览次数进行迭代&#xff0c;或者抖音视频的点击&#xff0c;那么如何高效记录呢&#xff0c;首先如果是使用普通的num 进行多线程操作的话&#xff0c;那么一定会带来数据一致性问题&#xff0c;所以一…

【Unity基础】6.动画状态机

【Unity基础】6.动画状态机 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity基础系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;Animator Controller组件 &#xff08;1&#xff09;创建组件 Animator Controller组件是unity用于控制管…

【细读经典】delay model and timing analysis

Technology-Dependent LogicOptimization, part 1 序言 如图所示是现代工业流程中对于一个高层次的抽象描述如何到最后的芯片的流程图&#xff0c;其中逻辑综合作为一个非常重要的部分&#xff0c;主要被分为两个阶段&#xff1a; 工艺无关的优化(technology-independent opt…

shell脚本学习笔记03(小滴课堂)

在shell脚本中&#xff0c;表示变量除了可以使用$a(a是一个变量)&#xff0c;还可以使用${a} 那这两种表示方式有什么区别么&#xff1f; 花括号可以和其它字符或者字母区分开来。 >追加内容 我们发现使用>会把原来的内容覆盖。 我们使用>>就不会覆盖了&#xff…

MAYA教程之模型的UV拆分与材质介绍

什么是UV 模型制作完成后&#xff0c;需要给模型进行贴图&#xff0c;就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器&#xff0c;可以点击打开 创建一个模型&#xff0c;可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…