精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件web
内容简介:本文介绍 Spring Boot 的配置文件和配置管理,以及介绍了三种读取配置文件的方式,并进行代码演示。spring
在 Spring Boot 出现以前,一个 Spring 项目广泛会存在不少个配置文件,例若有配置与 web 服务器相关信息的 web.xml,有配置 Spring 自己的各类 application-xxx.xml,一份 xxx 对应 Sping 的一个功能模块,例如 MVC 和 Data Source,还有第三方插件 如 log4j 等配置文件。此外,应用程序自己也可能存在多个配置文件,刚去数这些配置文件的数目都让人感受晕脑壳,更别说去管理和配置它们了。浏览器
Spring Boot 技术的到来,大大地简化了这些配置文件的管理和读取。对于 Spring.配置信息,它所支持的第三方框架的配置信息,应用自定义的配置信息,统统都整合了在一个application.properties 文件中,过去可能存在近10个的配置文件,现在只须要一个便可。不用再像之前那样,配置信息散落在应用的不一样配置文件。这显然大大的简化了配置信息的管理工做,固然也相应地减小了出错的几率。缓存
Spring Boot 启动的默认 web 服务器是 Tomcat,而端口为 8080,上下文是“/”。对于这些默认设置,咱们均可以在 appication.properties 中从新配置。tomcat
咱们如今在 appication.properties 中添加两行代码服务器
server.port=9090 server.servlet.context-path=/home`
按快捷键 Shift + F10 运行程序,输入原先的 网址 http://localhost:8080/hello
发现找不到服务器。缘由是咱们已经利用上面两行代码修改的 Tomcat 的端口号和应用的上下文。咱们输入如下网址就能够看到结果了。app
http://localhost:9090/home/hello框架
Spring Boot 默认内置的 web 服务器是 Tomcat。事实上,它支持三种嵌套的 web 服务器,另外两种是 Jetty 和 Undertow,而 Undertow 性能最优,能够将它设置为 web 服务器,取代另外两种。spring-boot
Spring Boot 的 spring-boot-starter-web 默认嵌套了 Tomcat。当咱们更换为其它 web 服务器时,如更换为 Undertow,须要把 Tomcat 给屏蔽掉。同时,还须要引进相应 web 服务器对应的 starter。性能
如今咱们尝试把 web 服务器切换为 Undertow,像下面那样修改 pom.xml
网上所查到的切换 web 服务器方案大多如上,可是在 IDEA 中编译运行程序,它老是
顽固地使用 Tomcat,而不启用 Undertow。这时候有足够理由怀疑这是 IDEA 的缓存问题所形成的,须要像下面这样刷新一下 IDEA 的 Maven 项目。
刷新 Maven 项目后,而后再使用 Maven 来编译一下程序,像下图那样双击 install。
编译完以后,按快捷键 Shift + F10 运行程序,此时能够看见日志输出显示 Undertow 已经成功启动了。
能够在应用中读取 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() 方法了。代码以下:
启动程序后,成功用两种方式读出配置文件的数据,在浏览器的输出结果以下:
第 3 种读取配置文件的方法是将一组属性自动注入到一个配置类中,这时须要借助注解 @ConfigurationProperties 和 @Configuration,咱们用这种方式读取 app.num1 和 app.num2 的值,并对它们求和,而后输出结果。仍是上代码。
AppConfig 类使用了两个注解 @ConfigurationProperties 和 @Configuration,在 @ConfigurationProperties 中输入了参数 “app”,它是属性 app.num1 和 app.num2 的前缀,从如下代码能够看出 AppConfig 就是一个普通的 POJO 文件,只不过是加上了注解。
接下来再看如何使用 AppConfig 这个类。如今咱们新建一个求和的控制器 SumController,使用注解 @Autowired 把 AppConfig 自动注入进来,就可使用了,是否是很方便、很简单。
按 Shift + F10 启动程序,输入 Sum 方法对应的 url http://localhost:9090/home/sum,便可看到结果。
好了,飞仙时空写的第三篇 Spring Boot 到此结束,欢迎转发和关注。
Enjoy coding.