spring boot 教程(三)配置详解
在大部分情况下,我们不需要做太多的配置就能够让spring boot正常运行。在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。
Spring Boot 支持多种外部配置方式
这些方式优先级如下:
- 命令行参数
- 来自
java:comp/env
的JNDI属性 - Java系统属性(
System.getProperties()
) - 操作系统环境变量
RandomValuePropertySource
配置的random.*
属性值jar
包外部的application-{profile}.properties
或application.yml
(带spring.profile
)配置文件jar
包内部的application-{profile}.properties
或application.yml
(带spring.profile
)配置文件jar
包外部的application.properties
或application.yml
(不带spring.profile
)配置文件jar
包内部的application.properties
或application.yml
(不带spring.profile
)配置文件@Configuration
注解类上的@PropertySource
- 通过
SpringApplication.setDefaultProperties
指定的默认属性
命令行参数
server.port=8081
那么对应的命令行就是:
mvn spring-boot:run -Drun.arguments="--server.port=8081"
系统参数
可以使用的参数可以是我们自己定义的,也可以是Spring Boot中默认的参数。
很多人可能会关心如web端口如何配置这样的问题,这些都是Spring Boot中提供的参数,部分可用参数如下:
- # LOGGING
- logging.path=/var/logs
- logging.file=myapp.log
- logging.config= # location of config file (default classpath:logback.xml for logback)
- logging.level.*= # levels for loggers, e.g. "logging.level.org.springframework=DEBUG" (TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF)
- # EMBEDDED SERVER CONFIGURATION (ServerProperties)
- server.port=8080
- server.address= # bind to a specific NIC
- server.session-timeout= # session timeout in seconds
- server.context-parameters.*= # Servlet context init parameters, e.g. server.context-parameters.a=alpha
- server.context-path= # the context path, defaults to '/'
- server.servlet-path= # the servlet path, defaults to '/'
如果我们是用mvn打包的话,系统参数就配置在我们的mvaen里面。如果是用tomcat打包的话,系统参数就配置在我们
操作系统环境变量
配置过JAVA_HOME的应该都了解这一个。
这里需要注意的地方,有些OS可以不支持使用.
这种名字,如server.port
,这种情况可以使用SERVER_PORT
来配置。
具体名字如何匹配,看本文后面。
RandomValuePropertySource
系统中用到随机数的地方,例如:
- 操作系统环境变量
- 配置过JAVA_HOME的应该都了解这一个。
- 这里需要注意的地方,有些OS可以不支持使用.这种名字,如server.port,这种情况可以使用SERVER_PORT来配置。
- 具体名字如何匹配,看本文后面。
- RandomValuePropertySource
- 系统中用到随机数的地方,例如:
- my.secret=${random.value}
- my.number=${random.int}
- my.bignumber=${random.long}
- my.number.less.than.ten=${random.int(10)}
- my.number.in.range=${random.int[1024,65536]}
- random.int*支持value参数和,max参数,当提供max参数的时候,value就是最小值。
random.int*
支持value
参数和,max
参数,当提供max
参数的时候,value
就是最小值。
应用配置文件(.properties或.yml)
当我们创建一个springboot项目的时候,系统默认会为我们在src/main/Java/resources目录下创建一个application.properties。
- name: java core
- price: 35.4
- public class BookController {
- "${name}")(
- private String name;
- "${price}")(
- private Double price;
- "/book")(value =
- public String bookToString(){
- return "图书名称:"+name+",图书价格:"+":"+price;
- }
- }
这里直接访问会出现
将配置文件的属性赋给实体类
当我们有很多配置属性的时候,这时我们会把这些属性作为字段来创建一个javabean,并将属性值赋予给他们。
- book.name: javacore
- book.price: '35.4'
- "book")(prefix =
- public class Book {
- private String name;
- private Double price;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Double getPrice() {
- return price;
- }
- public void setPrice(Double price) {
- this.price = price;
- }
- public String toString() {
- return "Book [name=" + name + ", price=" + price + "]";
- }
- }
- public class BookController {
- private Book book;
- "book")(
- public String framework(ModelMap map) {
- map.addAttribute("book",book);
- return "freeMarker/book";
- }
- }
- <html>
- <head lang="en">
- <meta charset="UTF-8" />
- <title></title>
- </head>
- <body>
- <h1>图书名称:${book.name}</h1>
- <h1>图书价格:${book.price}</h1>
- </body>
- </html>
最终结果图:
List
的时候需要注意在配置中对List
进行初始化!
- book.name: javacore
- book.price: '35.4'
- book.address:
- - '上海图书馆'
- - '上海张江高科图书馆'
- book.manage.name: '张三'
- book.manage.age: 23
这里我们添加了一个地址集合,和一个嵌套类,管理员对象。
- "book")(prefix =
- public class Book {
- private String name;
- private Double price;
- private List<String> address=new ArrayList<>();
- public Manage manage=new Manage();
- class Manage{
- private String name;
- private Integer age;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- public String toString() {
- return "Manage [name=" + name + ", age=" + age + "]";
- }
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Double getPrice() {
- return price;
- }
- public void setPrice(Double price) {
- this.price = price;
- }
- public String toString() {
- return "Book [name=" + name + ", price=" + price + "]";
- }
- public List<String> getAddress() {
- return address;
- }
- public void setAddress(List<String> address) {
- this.address = address;
- }
- public Manage getManage() {
- return manage;
- }
- public void setManage(Manage manage) {
- this.manage = manage;
- }
- }
记住,集合和对象一定要初始化,不然会报错。Controller基本不变。
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
- xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
- <head lang="en">
- <meta charset="UTF-8" />
- <title></title>
- </head>
- <body>
- <h1>图书名称:${book.name}</h1>
- <h1>图书价格:${book.price}</h1>
- <#list book.address as address>
- 图书所在地址 : ${address}<br/>
- </#list>
- <h2>管理员属性:${book.manage}<h2>
- </body>
- </html>
属性占位符
- app.name=MyApp
- app.description=${app.name} is a Spring Boot application
可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)。
通过如${app.name:默认名称}
方法还可以设置默认值,当找不到引用的属性时,会使用默认的属性。
由于{}方式改为了@ @方式,例如@name@。
如果你是引入的Spring Boot,你可以修改使用其他的分隔符
通过属性占位符还能缩短命令参数
server.port=${port:7001}
属性名匹配规则
例如有如下配置对象:
- "person")(prefix=
- public class ConnectionSettings {
- private String firstName;
- }
firstName可以使用的属性名如下:
person.firstName
,标准的驼峰式命名
person.first-name
,虚线(-)分割方式,推荐在.properties和.yml配置文件中使用
PERSON_FIRST_NAME
,大写下划线形式,建议在系统环境变量中使用
spring boot 教程(三)配置详解相关推荐
- 轻量级数据库sqlite,spring boot+sqlite的配置详解 (一)
spring boot+sqlite的配置,及成功运行详解 sqlite数据库的安装与调试 首先,通过sqlite官方地址下载对应的安装包 https://www.sqlite.org/downloa ...
- 轻量级数据库sqlite,spring boot+sqlite的配置详解 (二)
轻量级数据库sqlite,spring boot+sqlite的配置详解 (二) 轻量级数据库sqlite,spring boot+sqlite的配置详解 (一) 首先,需要创建一个spring bo ...
- Spring Boot的启动器Starter详解
Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot ...
- ElasticSearch——Spring Boot 集成 ES 操作详解
文章目录 ElasticSearch--Spring Boot 集成 ES 操作详解 1.SpringBoot 集成 ES 2.索引的API操作详解 3.文档的API操作详解 ElasticSearc ...
- mysql安装的官方教程_MySQL官方教程及各平台的安装教程和配置详解入口
官方文档入口: https://dev.mysql.com/doc/ 一般选择MySQL服务器版本入口: https://dev.mysql.com/doc/refman/en/ 在右侧有版本选择: ...
- Spring Boot的SpringApplication类详解
相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生.SpringApplication类的run()方法往往在Sprin ...
- (转)Spring Boot(八):RabbitMQ 详解
http://www.ityouknow.com/springboot/2016/11/30/spring-boot-rabbitMQ.html RabbitMQ 即一个消息队列,主要是用来实现应用程 ...
- Cobaltstrike系列教程(三)beacon详解
0x000–前文 有技术交流或渗透测试培训需求的朋友欢迎联系QQ/VX-547006660 2000人网络安全交流群,欢迎大佬们来玩 群号820783253 0x001-Beacon详解 1.Beac ...
- 【定时任务】Spring Boot 定时执行任务详解,每天定时几点钟执行任务
目录 一.静态:基于注解 二.动态:基于接口 三.多线程定时任务 序言: 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一.基于注解(@Scheduled) 二.基于接口 ...
- spring boot 整合JSP(详解)
在Web开发中,前端数据展示是项目的重要组成部分.JSP技术是常用的数据展示的模板引擎技术之一.Spring Boot默认支持的模板引擎有4种,分别是:FreeMarker.Groovy.Thymel ...
最新文章
- Z-BlogPHP主题/名扬图文博客主题模板商业版
- jQuery UI.Layout
- C语言实用基础大总结(高效快速学习精华、实用语句案例多)
- 教你一步搭建Flume分布式日志系统
- ad中pcb双面板怎么设置_html中表格tr的td单元格怎么设置宽度属性
- 利用卷积进行序列到序列学习
- 今年中秋云遮月,来年元宵雨打灯
- java实现水仙花数int_java实现水仙花数的计算|chu
- pdf 模版 汉字和数字_PDF怎么添加数字签名?这款编辑器软件很多人都说好用
- VS中Windows界面开发
- Multipy String | leetcode
- Listary与QTtabbar整合
- FFFfrance博客介绍
- arduino/Mixly心知天气
- krait和kryo_高效的Java序列化(Kryo和FST)
- jzoj5236. 【NOIP2017模拟8.7A组】利普希茨
- 北京java研发平均工资_各地java开发工程师平均工资 北京高级java开发工程师工资2万多...
- 【RPA学习天地:版本解读】艺赛旗iS-RPA2021.2版本亮点
- java原子变量的作用_原子变量 - jock_javaEE - 博客园
- 前端HTML5视频_Less-张晓飞-专题视频课程
热门文章
- Silverlight 结合WCF Duplex Service聊天程序出炉
- 便利店小程序需要服务器吗,便利店开发小程序的功能
- FFmpeg和WebRTC
- 查找数组中重复数字 (二)
- TLS(Thread Local Storage)问题demo
- Android投屏利器vysor
- Mac安装IDA后各版本android_server
- ssh免密码登陆远程服务器(3种方式)
- Android SharedPreferences的简单使用
- Android Multimedia框架总结(二十四)MediaMuxer实现手机屏幕录制成gif图