2-2 新建SpringBoot项目
一、创建SpringBoot项目
(1)在SpringBoot官网创建
(2.1)在 IDEA 中创建
Group:公司名
Artifact:项目名
创建成功后开始下载Maven依赖(选择右下角的Import Changes)
问题:idea现在只能创建最少jdk17,不能创建java8
原因:Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了,之后全力维护 3.x;而 Spring Boot 3.x 对 JDK 版本的最低要求是 17!
解决方法:不要用官方提供的 Spring Initializr 来初始化项目了,我们可以使用阿里云提供的脚手架镜像(https://start.aliyun.com/)
(2.2)在 IDEA 中使用阿里云脚手架创建
只需修改Initializer Service URL:
这种方式可能会报错:
(3)使用阿里云脚手架创建
下载下来是一个zip文件,解压后用IDEA打开
二、SpringBoot项目结构
|- wiki:# 项目特有文件,提交代码的时候不用提交 |- .idea |- wiki.iml# 如果没有maven的话会根据其中的配置自动下载,但是一般我们都会用自己提前下载好的maven,所以这个目录基本用不到|- .mvn |- wrapper |- mvnw linux命令|- mvnw.cmd windows命令|- src 所有的源码都写在这个目录下|- main|- java 所有的java类都写在这个目录下|- com.jiawa.wiki|- WikiApplication.java 启动类,需要加@SpringBootApplication注解|- resources 配置信息|- static 一般用来放前端的css js等,用不到,可以直接删了|- templates SpringBoot官方推荐的前端是用Thymeleaf,但我们是前后端分离,用Vue,用不到,可以直接删了|- application.properties 配置文件|- test 单元测试|- .gitignore 设置在git提交时忽略的文件|- HELP.md 就是readme|- pom.xml 配置maven依赖
三、启动SpringBoot项目
执行WikiApplication.java的main方法:
默认使用SpringBoot自带的Tomcat服务器启动,因此可以直接运行。
2-3 项目初始配置
一、编码配置
将所有文件的编码改为UTF-8
二、JDK配置
三、Maven配置
(1)IDEA 自带一个maven,其路径为:
E:\Program Files\IntelliJ IDEA 2019.2.3\plugins\maven\lib\maven3# E:\Program Files\IntelliJ IDEA 2019.2.3 是我的IDEA安装目录
(2)修改maven的配置文件
maven的配置文件的路径为:
E:\Program Files\IntelliJ IDEA 2019.2.3\plugins\maven\lib\maven3\conf\settings.xml
将其修改为下面的内容(配置阿里云镜像):
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!--localRepository要修改为自己电脑上的maven仓库的文件目录--><localRepository>C:\Users\甲蛙\.m2\repository</localRepository><pluginGroups></pluginGroups><proxies></proxies><servers></servers><mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central</url></mirror><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public</url><mirrorOf>central</mirrorOf></mirror><mirror><id>central</id><name>Maven Repository Switchboard</name><url>http://repo1.maven.org/maven2</url><mirrorOf>central</mirrorOf></mirror><mirror><id>repo2</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://repo2.maven.org/maven2</url></mirror><mirror><id>ibiblio</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url></mirror><mirror><id>jboss-public-repository-group</id><mirrorOf>central</mirrorOf><name>JBoss Public Repository Group</name><url>http://repository.jboss.org/nexus/content/groups/public</url></mirror><mirror><id>google-maven-central</id><name>Google Maven Central</name><url>https://maven-central.storage.googleapis.com</url><mirrorOf>central</mirrorOf></mirror><!-- 中央仓库在中国的镜像 --><mirror><id>maven.net.cn</id><name>one of the central mirrors in china</name><url>http://maven.net.cn/content/groups/public</url><mirrorOf>central</mirrorOf></mirror></mirrors><profiles><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile><profile><id>repository_set</id><repositories><repository><snapshots><enabled>false</enabled></snapshots><id>public</id><name>Public Repository</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></repository></repositories><pluginRepositories><pluginRepository><releases><updatePolicy>never</updatePolicy></releases><snapshots><enabled>false</enabled></snapshots><id>public</id><name>Public Repository</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></pluginRepository></pluginRepositories></profile></profiles></settings>
四、Git配置
(1)启用版本控制
(2)文件名的颜色表示该文件是否被Git管理
-
红色:还没交给Git管理
-
绿色:Git已管理,还未提交
-
蓝色:作过修改,还未提交
-
灰色:文件删除,还未提交(撤销删除操作,右键 -> Revert)
-
黑色:已经提交的文件
(3)第一次提交
将还没交给Git管理的文件都交给Git管理(git add)
将已被Git管理,还未提交的文件进行提交(git commit)
(4)可以通过.gitignore来忽略文件,本地工作空间相关的文件不要提交,比如:.idea, target, *.iml
如果不是代码的问题,是本地项目配置的问题,有一个超级好用的大招:
关闭项目
删除根目录下的.idea文件夹(这个文件里面放的都是项目的配置信息)
重新打开项目
2-4 代码关联远程仓库
访问远程仓库需要身份验证,SSH密钥可以提供一种安全的身份验证机制,使得开发者可以无需每次都输入用户名和密码就能访问远程Git仓库。我们需要先在本地计算机上生成一对私钥和公钥,然后再将公钥添加到Gitee、GitHub或GitLab等平台上的账户设置中。
(1)获取SSH公钥
方式一:Git GUI
方式二:命令行
在git-bash中输入:
ssh-keygen -t rsa -C "自己注册码云时的邮箱"
# 之后提示需要输入的信息都按回车键(使用默认选项)
看到如下界面则就表示操作成功了:
SSH公钥文件路径:C:\Users\你的用户名\.ssh\id_rsa.pub
(2)在代码托管平台中添加SSH公钥
以码云Gitee为例
(3)在代码托管平台中新建一个仓库
(4)将本地仓库与远程仓库进行关联
创建好仓库以后会出现一个代码提示页面:
-
第一个红色框就是在使用SSH访问远程仓库时的远程仓库的地址,之后我们在使用git remote命令添加远程仓库时,会给这个地址起一个别名(比如origin),这样在之后需要用到这个地址时就不用输入这么一串了。
-
如果本地还没有创建仓库,就执行 “创建 git 仓库” 部分的指令
-
如果已经有一个本地仓库了,就执行 “已有仓库?” 部分的指令
Step1: 使用git remote命令添加远程仓库
# 这行代码的意思是添加一个远程仓库git@gitee.com:ZhuYuxi200019/jiawa_wiki.git,并给它起名为origin,以后就用origin来指代这个远程仓库
$ git remote add origin git@gitee.com:ZhuYuxi200019/jiawa_wiki.git# 查看已添加的远程仓库
$ git remote -v
Step2: 使用git push命令将本地代码提交到远程仓库
$ git push -u origin "master"Enumerating objects: 26, done.
Counting objects: 100% (26/26), done.
Delta compression using up to 12 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (26/26), 3.87 KiB | 991.00 KiB/s, done.
Total 26 (delta 2), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag b045baaa
To gitee.com:ZhuYuxi200019/jiawa_wiki.git* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
之后如果要从远程仓库下载代码就用git clone命令
$ git clone git@gitee.com:ZhuYuxi200019/jiawa_wiki.git
2-5 启动日志优化
默认日志样式:
"E:\Program Files\Java\jdk1.8.0_221\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:\Program Files\IntelliJ IDEA 2019.2.3\lib\idea_rt.jar=57470:E:\Program Files\IntelliJ IDEA 2019.2.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jfxrt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\localedata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\nashorn.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunec.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunjce_provider.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunmscapi.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunpkcs11.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\zipfs.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\javaws.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jce.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfr.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfxswt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jsse.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\management-agent.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\plugin.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\resources.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\rt.jar;E:\zhuyuxi333\IdeaProjects\wiki\target\classes;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-web\2.4.2\spring-boot-starter-web-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter\2.4.2\spring-boot-starter-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot\2.4.2\spring-boot-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-autoconfigure\2.4.2\spring-boot-autoconfigure-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-logging\2.4.2\spring-boot-starter-logging-2.4.2.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;E:\Program Files\MavenRepository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;E:\Program Files\MavenRepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;E:\Program Files\MavenRepository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-json\2.4.2\spring-boot-starter-json-2.4.2.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-tomcat\2.4.2\spring-boot-starter-tomcat-2.4.2.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.41\tomcat-embed-core-9.0.41.jar;E:\Program Files\MavenRepository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.41\tomcat-embed-websocket-9.0.41.jar;E:\Program Files\MavenRepository\org\springframework\spring-web\5.3.3\spring-web-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-beans\5.3.3\spring-beans-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-webmvc\5.3.3\spring-webmvc-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-aop\5.3.3\spring-aop-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-context\5.3.3\spring-context-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-expression\5.3.3\spring-expression-5.3.3.jar;E:\Program Files\MavenRepository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;E:\Program Files\MavenRepository\org\springframework\spring-core\5.3.3\spring-core-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-jcl\5.3.3\spring-jcl-5.3.3.jar" com.zhuyuxi333.wiki.WikiApplication. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.4.2)2025-03-02 16:35:14.399 INFO 6024 --- [ main] com.zhuyuxi333.wiki.WikiApplication : Starting WikiApplication using Java 1.8.0_221 on DESKTOP-1H3OOAD with PID 6024 (E:\zhuyuxi333\IdeaProjects\wiki\target\classes started by zxx in E:\zhuyuxi333\IdeaProjects\wiki)
2025-03-02 16:35:14.412 INFO 6024 --- [ main] com.zhuyuxi333.wiki.WikiApplication : No active profile set, falling back to default profiles: default
2025-03-02 16:35:15.345 INFO 6024 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2025-03-02 16:35:15.371 INFO 6024 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-03-02 16:35:15.371 INFO 6024 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.41]
2025-03-02 16:35:15.506 INFO 6024 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-03-02 16:35:15.506 INFO 6024 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 983 ms
2025-03-02 16:35:15.651 INFO 6024 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2025-03-02 16:35:15.712 INFO 6024 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2025-03-02 16:35:15.792 INFO 6024 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2025-03-02 16:35:15.807 INFO 6024 --- [ main] com.zhuyuxi333.wiki.WikiApplication : Started WikiApplication in 2.094 seconds (JVM running for 4.624)
(1)修改logback日志样式
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 如果是Mac,要将路径修改为.\log --><property name="PATH" value="./log"></property><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><!-- 这一行原始的内容为: --><!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %msg%n</Pattern>--><Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %msg%n</Pattern></encoder></appender><appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${PATH}/trace.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><layout><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern></layout></appender><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${PATH}/error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><layout><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern></layout><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><root level="ERROR"><appender-ref ref="ERROR_FILE" /></root><root level="TRACE"><appender-ref ref="TRACE_FILE" /></root><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>
定义日志样式的代码
<Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %msg%n</Pattern>
-
<Pattern>
标签用于指定日志信息的输出格式 -
%d{ss.SSS}
-
%d
是日期时间转换符,用于输出日志事件发生的时间。 -
{ss.SSS}
是日期时间的格式说明。ss
表示秒,SSS
表示毫秒,所以这个格式会输出日志事件发生时的秒和毫秒部分,例如05.123
。
-
-
%highlight(%-5level)
-
%level
是日志级别转换符,用于输出日志事件的级别(如DEBUG
、INFO
、WARN
、ERROR
等)。 -
%-5level
中的-
表示左对齐,5
表示输出的宽度为 5 个字符。如果日志级别名称长度小于 5 个字符,会在右侧填充空格。 -
%highlight(...)
是 Logback 提供的一个高亮转换符,用于对包裹的内容进行高亮显示,具体的高亮效果取决于日志输出的终端支持情况。
-
-
%blue(%-30logger{30}:%-4line)
-
%logger
是日志记录器名称转换符,用于输出记录日志的 Logger 名称。 -
{30}
表示只取 Logger 名称的最后 30 个字符。 -
%-30logger{30}
中的-
表示左对齐,30
表示输出的宽度为 30 个字符。如果 Logger 名称长度小于 30 个字符,会在右侧填充空格。 -
%line
是行号转换符,用于输出记录日志的代码行号。 -
%-4line
中的-
表示左对齐,4
表示输出的宽度为 4 个字符。如果行号长度小于 4 个字符,会在右侧填充空格。 -
%blue(...)
是 Logback 提供的一个颜色转换符,用于将包裹的内容以蓝色显示,具体的颜色效果取决于日志输出的终端支持情况。
-
-
%thread
-
%thread
是线程名转换符,用于输出产生日志事件的线程名称
-
-
%msg
-
%msg
是日志消息转换符,用于输出日志记录时传递的消息内容。
-
-
%n
-
%n
是换行符转换符,用于在每条日志记录的末尾添加一个换行符,使每条日志记录单独占一行。
-
修改后的日志样式:
"E:\Program Files\Java\jdk1.8.0_221\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:\Program Files\IntelliJ IDEA 2019.2.3\lib\idea_rt.jar=57587:E:\Program Files\IntelliJ IDEA 2019.2.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jfxrt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\localedata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\nashorn.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunec.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunjce_provider.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunmscapi.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunpkcs11.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\zipfs.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\javaws.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jce.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfr.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfxswt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jsse.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\management-agent.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\plugin.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\resources.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\rt.jar;E:\zhuyuxi333\IdeaProjects\wiki\target\classes;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-web\2.4.2\spring-boot-starter-web-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter\2.4.2\spring-boot-starter-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot\2.4.2\spring-boot-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-autoconfigure\2.4.2\spring-boot-autoconfigure-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-logging\2.4.2\spring-boot-starter-logging-2.4.2.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;E:\Program Files\MavenRepository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;E:\Program Files\MavenRepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;E:\Program Files\MavenRepository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-json\2.4.2\spring-boot-starter-json-2.4.2.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-tomcat\2.4.2\spring-boot-starter-tomcat-2.4.2.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.41\tomcat-embed-core-9.0.41.jar;E:\Program Files\MavenRepository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.41\tomcat-embed-websocket-9.0.41.jar;E:\Program Files\MavenRepository\org\springframework\spring-web\5.3.3\spring-web-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-beans\5.3.3\spring-beans-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-webmvc\5.3.3\spring-webmvc-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-aop\5.3.3\spring-aop-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-context\5.3.3\spring-context-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-expression\5.3.3\spring-expression-5.3.3.jar;E:\Program Files\MavenRepository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;E:\Program Files\MavenRepository\org\springframework\spring-core\5.3.3\spring-core-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-jcl\5.3.3\spring-jcl-5.3.3.jar" com.zhuyuxi333.wiki.WikiApplication. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.4.2)56.800 INFO c.z.wiki.WikiApplication :55 main Starting WikiApplication using Java 1.8.0_221 on DESKTOP-1H3OOAD with PID 4040 (E:\zhuyuxi333\IdeaProjects\wiki\target\classes started by zxx in E:\zhuyuxi333\IdeaProjects\wiki)
56.803 INFO c.z.wiki.WikiApplication :660 main No active profile set, falling back to default profiles: default
57.290 INFO o.s.b.w.e.t.TomcatWebServer :108 main Tomcat initialized with port(s): 8080 (http)
57.296 INFO o.a.c.http11.Http11NioProtocol:173 main Initializing ProtocolHandler ["http-nio-8080"]
57.297 INFO o.a.c.core.StandardService :173 main Starting service [Tomcat]
57.297 INFO o.a.c.core.StandardEngine :173 main Starting Servlet engine: [Apache Tomcat/9.0.41]
57.348 INFO o.a.c.c.C.[.[localhost].[/] :173 main Initializing Spring embedded WebApplicationContext
57.348 INFO o.s.b.w.s.c.ServletWebServerApplicationContext:289 main Root WebApplicationContext: initialization completed in 517 ms
57.453 INFO o.s.s.c.ThreadPoolTaskExecutor:181 main Initializing ExecutorService 'applicationTaskExecutor'
57.492 INFO o.s.b.a.w.s.WelcomePageHandlerMapping:53 main Adding welcome page: class path resource [static/index.html]
57.541 INFO o.a.c.http11.Http11NioProtocol:173 main Starting ProtocolHandler ["http-nio-8080"]
57.555 INFO o.s.b.w.e.t.TomcatWebServer :220 main Tomcat started on port(s): 8080 (http) with context path ''
57.561 INFO c.z.wiki.WikiApplication :61 main Started WikiApplication in 1.192 seconds (JVM running for 1.706)
设置日志输出位置
<configuration><!-- 日志目录 --><property name="PATH" value="./log"></property><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">...</appender><appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- TRACE日志输出文件 --><file>${PATH}/trace.log</file>...</appender><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- ERROR日志输出文件 --><file>${PATH}/error.log</file>...</appender><root level="ERROR"><appender-ref ref="ERROR_FILE" /></root><root level="TRACE"><appender-ref ref="TRACE_FILE" /></root><root level="INFO"><!-- INFO日志输出到控制台 --><appender-ref ref="STDOUT" /></root>
</configuration>
设置Git忽略日志输出目录
(2)增加启动成功文案
WikiApplication.java:
package com.zhuyuxi333.wiki;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;@SpringBootApplication
public class WikiApplication {private static final Logger LOG = LoggerFactory.getLogger(WikiApplication.class);public static void main(String[] args) {SpringApplication app = new SpringApplication(WikiApplication.class);// 增加启动成功日志Environment env = app.run(args).getEnvironment();LOG.info("启动成功!!");LOG.info("地址:\thttp://127/0.0.1:{}", env.getProperty("server.port"));}}
通过 env.getProperty(...) 可以获取 application.properties 中的应用配置信息。
启动后效果:
(3)修改启动图案
在resources目录下增加一个banner.txt文件:
_______ __ __ _ ____ ____ ____|___ / | \ \ / / (_)___ \___ \___ \/ /| |__ _ \ \_/ / ___ ___ __) |__) |__) |/ / | '_ \| | | \ / | | \ \/ / ||__ <|__ <|__ </ /__| | | | |_| || || |_| |> <| |___) |__) |__) |/_____|_| |_|\__,_||_| \__,_/_/\_\_|____/____/____/
生成字符图案的网站:http://patorjk.com/software/taag
启动后效果: