精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件

摘要:
Jinjin SpringBoot03:SpringBoot的配置文件和配置管理,以及三种读取配置文件内容的方法简介:本文介绍了SpringBoot配置文件和设置管理,以及读取配置文件的三种方法,以及代码演示。SpringBoot技术的到来极大地简化了这些配置文件的管理和读取。默认情况下,SpringBoot的Springbootstarter web具有Tomcat嵌套。事实上,SpringBoot提供了三种读取配置文件的方法。

精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件

内容简介:本文介绍 Spring Boot 的配置文件和配置管理,以及介绍了三种读取配置文件的方式,并进行代码演示。

在 Spring Boot 出现之前,一个 Spring 项目普遍会存在很多个配置文件,例如有配置与 web 服务器相关信息的 web.xml,有配置 Spring 本身的各种 application-xxx.xml,一份 xxx 对应 Sping 的一个功能模块,例如 MVC 和 Data Source,还有第三方插件 如 log4j 等配置文件。此外,应用程序本身也可能存在多个配置文件,刚去数这些配置文件的数目都让人感觉晕脑袋,更别说去管理和配置它们了。

Spring Boot 技术的到来,大大地简化了这些配置文件的管理和读取。对于 Spring.配置信息,它所支持的第三方框架的配置信息,应用自定义的配置信息,通通都整合了在一个application.properties 文件中,过去可能存在近10个的配置文件,如今只需要一个即可。不用再像以前那样,配置信息散落在应用的不同配置文件。这显然大大的简化了配置信息的管理工作,当然也相应地减少了出错的概率。

1、Web 服务器的配置

Spring Boot 启动的默认 web 服务器是 Tomcat,而端口为 8080,上下文是“/”。对于这些默认设置,我们都可以在 appication.properties 中重新配置。

我们现在在 appication.properties 中添加两行代码

server.port=9090
server.servlet.context-path=/home`

image

按快捷键 Shift + F10 运行程序,输入原先的 网址 http://localhost:8080/hello
发现找不到服务器。原因是我们已经利用上面两行代码修改的 Tomcat 的端口号和应用的上下文。我们输入以下网址就可以看到结果了。

http://localhost:9090/home/hello

image

2、用 Undertow 替换默认的 Tomcat 服务器

Spring Boot 默认内置的 web 服务器是 Tomcat。事实上,它支持三种嵌套的 web 服务器,另外两种是 Jetty 和 Undertow,而 Undertow 性能最优,可以将它设置为 web 服务器,取代另外两种。

Spring Boot 的 spring-boot-starter-web 默认嵌套了 Tomcat。当我们更换为其它 web 服务器时,如更换为 Undertow,需要把 Tomcat 给屏蔽掉。同时,还需要引进相应 web 服务器对应的 starter。

现在我们尝试把 web 服务器切换为 Undertow,像下面那样修改 pom.xml

image

网上所查到的切换 web 服务器方案大多如上,但是在 IDEA 中编译运行程序,它总是
顽固地使用 Tomcat,而不启用 Undertow。这时候有足够理由怀疑这是 IDEA 的缓存问题所造成的,需要像下面这样刷新一下 IDEA 的 Maven 项目。

image

刷新 Maven 项目后,然后再使用 Maven 来编译一下程序,像下图那样双击 install。

image

编译完之后,按快捷键 Shift + F10 运行程序,此时可以看见日志输出显示 Undertow 已经成功启动了。

image

3、读取 Spring Boot 的配置

可以在应用中读取 application.properties 的配置文件,并获取其中配置信息,以供应用程序使用。事实上 Spring Boot 提供了三种方式来读取配置文件。
第 1 种方法是通过 Environment 类 的 getPropery() 方法读取。
第 2 种方法是通过 @Value 注解来自动注入属性值。
第 3 种方法是将一组属性自动注入到一个配置类中。

我们先在 application.properties 中加入如下四行配置,然后分别用三种方法来读取。

app.message1=Hi, Felix!
app.message2=You are really an IT expert.
app.num1=4
app.num2=5

现在修改 HelloWorld 的 sayHello 方法,使用 @Value 注解的方法读取 app.message1,用 Enviornment.getProperty() 读取 app.message2,用 @Autowired 把Environment 注入进来,就可以调用它的 getProperty() 方法了。代码如下:

image

启动程序后,成功用两种方式读出配置文件的数据,在浏览器的输出结果如下:

image

第 3 种读取配置文件的方法是将一组属性自动注入到一个配置类中,这时需要借助注解 @ConfigurationProperties 和 @Configuration,我们用这种方式读取 app.num1 和 app.num2 的值,并对它们求和,然后输出结果。还是上代码。

image

AppConfig 类使用了两个注解 @ConfigurationProperties 和 @Configuration,在 @ConfigurationProperties 中输入了参数 “app”,它是属性 app.num1 和 app.num2 的前缀,从以下代码可以看出 AppConfig 就是一个普通的 POJO 文件,只不过是加上了注解。

接下来再看如何使用 AppConfig 这个类。现在我们新建一个求和的控制器 SumController,使用注解 @Autowired 把 AppConfig 自动注入进来,就可以使用了,是不是很方便、很简单。

image

按 Shift + F10 启动程序,输入 Sum 方法对应的 url http://localhost:9090/home/sum,即可看到结果。

image

好了,飞仙时空写的第三篇 Spring Boot 到此结束,欢迎转发和关注。

Enjoy coding.

免责声明:文章转载自《精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据库连接池的理解和使用注册苹果开发者账号的详细步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

springboot 有关拦截器遇到的问题

最近改造搜索服务,原来是用 ngx + lua 写的,虽然性能很高,带来的问题是可维护性不太方便,不是指lua语言方面,是因为团队就2个开发人员,另外一个开发人员的擅长语言是Java,于是准备将搜索服务移植于Java语言,选型了现在当下的springboot,这样就可以让更多的人更维护这个服务。 我也是刚学springboot,以前也是自己玩过SSM框架,...

使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例

前言  本文主要是演示一个例子,服务器后台程序从PLC采集数据,并推送给在线客户端显示,以及推送给web端进行实时的显示,还支持远程操作,支持安卓端的同步监视和远程操作,关于HslCommunication的相关资料如下 nuget地址:https://www.nuget.org/packages/HslCommunication/           ...

eclipse+maven+ssm框架搭建

eclipse+maven+ssm框架 0、系统环境 1)Windows 10 企业版 2)JDK 1.8.0_131 3)Eclipse Java EE IDE for Web Developers  Version: Neon.3 Release (4.6.3) 4)Tomcat 8.5 1、maven下载及配置 maven的下载地址:http:...

win2003+iis6服务器设置问题集

问题1:未启用父路径症状举例:Server.MapPath() 错误 'ASP 0175 : 80004005' 不允许的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4 在 MapPath 的 Path 参数中不允许字符 '..'。原因分析:许多Web页面里要用到诸如../格式的语句(即回到上一层的页...

Python小项目四:实现简单的web服务器

https://blog.csdn.net/u010103202/article/details/74002538 本博客是整理在学习实验楼的课程过程中记录下的笔记形成的,参考:https://www.shiyanlou.com/courses/552。不同之处在于实验楼使用python2.7,而博主这里使用的是python3.6。在学习中也因为pytho...

如何在win7下通过easyBCD引导安装Ubuntu14.04

不需要U盘 在Win7下装Ubuntu双系统 本文测试安装的是32位的ubuntu-14.10-desktop-i386.iso 系统。 准备: Ubuntu系统ISO文件。EasyBCD 软件。  Step 1. 在windows里面把空余空间腾出来 计算机右键,管理,磁盘管理,通过压缩卷等方法得到要分给 Ubuntu系统的分区。或者原来你就有某个盘用于...