SpringBoot2.x系列教程04--SpringBoot花样配置之自定义Web端口及开启日志功能

简介: 前言上一章节中,壹哥 带各位玩了个花样配置,设置了一个自定义的Banner图,而且 壹哥 还给各位留了个作业,让大家设计一个苍老师的图片给我看看,是不是都设计好了呢?别忘了发给我共享哦。今天 壹哥 带各位再学习其他的一些花样技巧,比如设置自定义的Web端口号,启动Log日志功能等,这些可不是花架子了哦,这些都是很有用的实战技巧,这些都是我们项目开发时必须配置的设置。一. 修改端口号和访问路径我们知道,在任何一个Web项目中,都需要设置一个Web端口号,比如80、8080、8081等端口号。有的小伙伴说,我就没设置过端口号也没问题啊!你没配置过,那是因为使用的是默认的80或者8080端

前言

上一章节中,壹哥 带各位玩了个花样配置,设置了一个自定义的Banner图,而且 壹哥 还给各位留了个作业,让大家设计一个苍老师的图片给我看看,是不是都设计好了呢?别忘了发给我共享哦。

今天 壹哥 带各位再学习其他的一些花样技巧,比如设置自定义的Web端口号,启动Log日志功能等,这些可不是花架子了哦,这些都是很有用的实战技巧,这些都是我们项目开发时必须配置的设置。

一. 修改端口号和访问路径

我们知道,在任何一个Web项目中,都需要设置一个Web端口号,比如80、8080、8081等端口号。有的小伙伴说,我就没设置过端口号也没问题啊!你没配置过,那是因为使用的是默认的80或者8080端口,没有端口号是不可能的!但是有时候我们就不想用80和8080端口,或者这两个端口被别的程序给占用了,那怎么办呢?

自定义呗!

今天 壹哥 就带各位自定义这个Web端口号,这在SpringBoot中是很容易就可以实现的。

1. 创建application.properties文件

在Spring Boot 项目中,我们可以创建一个全局的配置文件application.properties 或者是 application.yml,该文件需要存放在 resources 目录下或者类路径下的 /config 目录中,一般我们都放到 resources 下。

结合之前的章节,我们首先创建一个SpringBoot项目,然后在该项目的src/main/resource目录下,创建application.properties格式的配置文件。我们直接通过New按钮选择File,文件后缀修改成properties即可。

这个文件的名称必须是application.properties哦。

把文件保存在resources目录下。

2. 修改端口号与访问路径

application.properties配置文件创建之后,我们就可以进行自定义配置了。这里我把 tomcat 的端口修改为8088,并将默认的访问根路径 "/" 修改为 "/oa"。

application.properties文件的配置如下:

server.port=8088server.servlet.context-path=/oa

当然SpringBoot项目中,也有另一种配置文件的格式yml,如果是application.yml文件,则配置格式如下:

server:  port: 8088  servlet:
    context-path: /oa

3. 创建一个Controller

为了验证我们的项目是否配置完毕了,这里 壹哥 简单创建了一个Controller接口,各位随意创建即可。

4. 测试效果

接下来我们就把项目启动起来,我们在控制台可以看到如下效果,会发现我们项目的根路径此时已经变成了”/oa“,而不再是之前默认的”/“。

我们打开浏览器,就可以利用http://localhost:8088/oa/hi这个地址来访问我们的接口了。

如果你想进行跟多的配置,请参考如下链接。

更多配置信息

二. 日志配置

1. 日志功能配置

除了可以自定义Web端口与项目根路径之外,SpringBoot中还运行我们灵活的进行日志的开关设置。在Spring Boot中,对各种常用的日志框架都做了支持,我们可以通过配置文件来修改默认的日志开关配置。默认情况下,Spring Boot 使用 Logback 作为日志框架。

接下来我们在application.properties文件中,设置日志文件的存储位置,以及日志的级别,如下所示:

logging.file.path=../logs/spring-boot-hello.log
logging.level.org.springframework.web=DEBUG

如果你使用的是application.yml配置文件,可以是如下写法:

logging:  file:    path:../logs/spring-boot-hello.log
  level.org.springframework.web: DEBUG

完整的代码格式如下图所示,各位可以参考。

2. 启动测试

等我们把项目重新启动起来,找到自己项目日志所设置的盘符,就可以看到有一个logs日志目录,存放了本项目的日志信息,如下图所示。

这样,我们的日志功能就轻松的实现了。

三. 自动配置再分析

有的小伙伴知道,在之前SSM阶段,要想实现以上这些配置,是挺麻烦的,而在SpringBoot中则很容易,这是怎么做到的呢?其实这都归功于SpringBoot中的自动配置功能,这里 壹哥 对此做一个简单分析。

1. 自动配置

在Spring Boot中,带有一个很牛逼的自动配置(auto-configuration)功能,这里我先简单提一下,后面我再对这个原理进行深入的分析。

自动配置会尝试根据我们添加的jar依赖包,自动的配置Spring应用。比如在classpath下存在HSQLDB,并且我们没有手动配置任何数据库连接的beans,那么Spring Boot将自动配置一个内存型(in-memory)的数据库。

2. 自动配置的非侵入性

SpringBoot的自动配置(Auto-configuration)功能是非侵入性的,就是任何时候,你都可以定义自己的配置类来替换自动配置的特定部分。例如,如果你添加自己的DataSource bean,默认的内嵌数据库支持将不被考虑。

3. 自动配置的实现方式

实现自动配置有两种可选方式,分别是将@EnableAutoConfiguration或@SpringBootApplication注解添加到@Configuration类上。

注意

我们只应该添加一个自动配置的注解,@EnableAutoConfiguration或者@SpringBootApplication,通常建议将它添加到主配置类(primary @Configuration)上。

四. 关闭特定的自动配置

当然,如果你非要特立独行,就想和别人不一样,就想给自己找麻烦,那也可以把自动配置功能给关闭掉,这时我们可以使用@EnableAutoConfiguration或者@SpringBootApplication注解的exclude属性禁用它们。

我们以关闭数据源的自动配置为例,只需要排除掉数据源配置,就不会再自动配置数据源了。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

去除数据源自动配置代码,如下图所示:

另外,如果该类(DataSourceAutoConfiguration)不在classpath中,你可以使用该注解的excludeName属性,并指定全限定名来达到相同效果。

最后,你也可以通过spring.autoconfigure.exclude属性exclude多个自动配置项(一个自动配置项集合)。

注意

通过注解级别或exclude属性都可以定义排除项!

结语

好了,今天的内容就结束啦,我们今天对SpringBoot的了解又多了一些,好开心哦。你有么有把今天的内容都掌握了呢?

今日小作业:

修改自己的端口号为8888,项目根路径为“/qf”,并开启日志功能,编写一个Web接口,接口中采集日志,然后访问该接口。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
6月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1117 64
搭建ELK日志收集,保姆级教程
|
6月前
|
安全 网络协议 NoSQL
Web渗透-常见的端口及对其的攻击思路
本文介绍了常见网络服务端口及其安全风险,涵盖FTP、SSH、Telnet、SMTP、DNS、HTTP、SMB、数据库及远程桌面等20余个端口,涉及弱口令爆破、信息泄露、未授权访问、缓冲区溢出等典型漏洞,适用于网络安全学习与渗透测试参考。
1258 59
|
6月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1108 5
|
12月前
|
缓存 NoSQL Java
基于SpringBoot的Redis开发实战教程
Redis在Spring Boot中的应用非常广泛,其高性能和灵活性使其成为构建高效分布式系统的理想选择。通过深入理解本文的内容,您可以更好地利用Redis的特性,为应用程序提供高效的缓存和消息处理能力。
1169 79
|
11月前
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
754 7
|
JavaScript 前端开发 Java
Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案
本文解决了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use的问题,并通过介绍端口的使用原理和操作系统的端口管理机制,可以更有效地解决端口冲突问题,并确保Web服务器能够顺利启动和运行。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
900 7
|
Java 测试技术 Spring
Spring Boot随机端口怎么动态扩容?
在Spring Boot中,可以通过`${random.int(2000,8000)}`在配置文件中设置随机端口,确保每次启动时端口不同。此外,还可以通过检测机制确保生成的随机端口未被占用,避免端口冲突。具体实现包括使用`System.setProperty`设置有效随机端口、自定义属性源以及直接设置`server.port=0`让Spring Boot自动选择空闲端口。推荐使用`server.port=0`以简化配置并避免冲突。
351 8
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
此API用于检测指定TCP端口是否开放,支持POST/GET请求。需提供用户ID、KEY、目标主机,可选指定端口(默认80)和地区(默认国内)。返回状态码、信息提示、检测主机、端口及状态(开放或关闭)。示例中ID和KEY为公共测试用,建议使用个人ID和KEY以享受更高调用频率。
357 14
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
该API用于检测目标主机指定TCP端口是否开放,适用于检测连通状态等场景。支持指定大陆、美国、香港等检测节点。请求地址为 `https://cn.apihz.cn/api/wangzhan/port.php`,支持POST和GET请求方式。请求参数包括 `id`、`key`、`type`、`host` 和 `port`。返回参数包含检测结果和状态码。示例请求:`https://cn.apihz.cn/api/wangzhan/port.php?id=88888888&key=88888888&type=1&host=49.234.56.78&port=80`。
415 3