springboot学习(三) springboot文件配置
1、简介
springboot没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml
中引入模块化的Starter POMs
,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties
中完成一些属性配置就能开启各模块的应用。
2、自定义属性和加载
我们使用的时候在application.properties中定义一些自己使用的属性:
com.cnblogs.name=origalom
com.cnblogs.title=学习Spring Boot
然后在代码中利用@Value("${属性名}")注解来获取对应的配置的值:
@Component
public class Properties { @Value("${com.cnblogs.name}")
private String name; @Value("${com.cnblogs.title}")
private String title; // ...... }
最后,编写测试代码进行测试,查看是否可以正常获取到配置中的数据:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class TestProperties { @Autowired
private Properties properties; @Test
public void test() {
System.out.println(properties.getName());
System.out.println(properties.getTitle());
}
}
3、参数间的引用
在配置文件中参数之间是可以直接引用的,方法为${属性名}:
com.cnblogs.name=origalom
com.cnblogs.title=学习Spring Boot
com.cnblogs.desc=${com.cnblogs.name.name}正在${com.cnblogs.title}
4、使用随机数
有时,我们需要的参数不是一个固定的数,而是随机的一个数。这个时候我们就可以通过${random}来产生随机数:
# 随机字符串
com.cnblogs.value=${random.value}
# 随机整数
com.cnblogs.int=${random.int}
# 随机long
com.cnblogs.long=${random.long}
# 100以内的随机整数
com.cnblogs.int1=${random.int(100)}
# 100-200之间的随机整数
com.cnblogs.int2=${random.int[100,200]}
# 随机uuid
com.cnblogs.uuid=${random.uuid}
5、通过命令行设置属性值
默认情况下,SpringApplication将任何可选的命令行参数(以'--'开头,比如,--server.port=9000)转化为property,并将其添加到Spring Environment中。如上所述,命令行属性总是优先于其他属性源。
如果不想使用命令行的形式,可以通过设置取消这个功能:
SpringApplication application = new SpringApplication(Application.class);
// 取消通过命令行设置属性值
application.setAddCommandLineProperties(false);
application.run(Application.class, args);
6、多环境配置
一般情况下,应用程序会被安装到不同的环境中,比如开发,测试,生产等,而在这些环境中数据库,服务器端口号等配置可能不同,所以很容易发生错误。
在spring boot中,多环境配置文件名需要满足application-{profile}.properties
的格式,其中{profile}
对应你的环境标识:
- application-dev.properties: 开发环境
- application-test.properties: 测试环境
- application-prod.properties: 生产环境
然后,可以在application.properties中设置spring.profiles.active来确定使用哪个环境,其值对应{profile}
值。
springboot学习(三) springboot文件配置的更多相关文章
- SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池
三.读取外部的资源配置文件并配置数据库连接池 1.读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: @Configuration ...
- SpringBoot学习<二>——SpringBoot的默认配置文件application和多环境配置
一.SpringBoot的默认文件appliction 上一篇文章已经说明,springboot启动会内嵌tomcat,端口也是默认的8080,如果我们想要改变端口如果做呢? 在springboot项 ...
- SpringBoot学习(三):日志
1.日志框架 小张:开发一个大型系统: 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? 2.框架来记录系统的一些运行时信息: ...
- Springboot学习:SpringMVC自动配置
Spring MVC auto-configuration Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:==(WebMvcAuto ...
- springboot之assembly的文件配置
一.在使用springboot框架的时候,存在一个问题.就是我们配置yaml文件,需要单独提出来做参数修改.当然这个是可以通过spring.profiles.active的方式来配置dev,prod等 ...
- SpringBoot学习(七)-->SpringBoot在web开发中的配置
SpringBoot在web开发中的配置 Web开发的自动配置类:在Maven Dependencies-->spring-boot-1.5.2.RELEASE.jar-->org.spr ...
- SpringBoot学习(六)-->SpringBoot的自动配置的原理
Spring Boot的自动配置的原理 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入 ...
- 尚硅谷springboot学习9-配置文件值注入
首先让我想到的是spring的依赖注入,这里我们可以将yaml或者properties配置文件中的值注入到java bean中 配置文件 person: lastName: hello age: 18 ...
- SpringBoot入门-多环境文件配置(二)
pom.xml <name>springboot-application</name> <description>A project for Spring Boot ...
- springboot学习三:整合jsp
在pom.xml加入jstl <!--springboot tomcat jsp 支持开启--> <dependency> <groupId>org.apache. ...
随机推荐
- CF 276C Little Girl and Maximum Sum【贪心+差分】
C. Little Girl and Maximum Sum time limit per test2 seconds memory limit per test256 megabytes input ...
- CF 990C. Bracket Sequences Concatenation Problem【栈/括号匹配】
[链接]:CF [题意]: 给出n个字符串,保证只包含'('和')',求从中取2个字符串链接后形成正确的括号序列的方案数(每个串都可以重复使用)(像'()()'和'(())'这样的都是合法的,像')( ...
- 大数模板(Java)
大数加法 /* 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数) Output 输出A + B ...
- HDU 2551 竹青遍野(循环,水)
/* 他开始在他的院子种竹子,第1个月种1根竹子,第2个月种8根竹子,第3个月种27根竹子 ...第N个月就种(N^3)根竹子.当他种下第X根竹子那一刻,就是他重出江湖之时! 告诉你X的值, 你能算出 ...
- Codeforces Round 253 (Div. 2)
layout: post title: Codeforces Round 253 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- luogu P1126 机器人搬重物
题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径1.6米的球.在试验阶段,机器人被用于在一个储藏室中搬运货物.储藏室是一个N*M的网格,有些格子为不可移动的障碍.机 ...
- 【动态规划】【记忆化搜索】CODEVS 3409 搬运礼物 CodeVS原创
考虑暴力递归求解的情况: f(i)=min(a(i),f(i-1),f(i-2),...,f(1)) 由于只要参数相同,f()函数的返回值是一样的,因此导致了大量的重复计算,所以我们可以记忆下来. # ...
- React Conf 2017 干货总结 1: React + ES next = ♥
React Conf 2017在加利福尼亚州的圣克拉拉万豪酒店圆满落幕,这已经是Facebook举办的第三届React官方大会了.虽然不能参会,但是作为前端开发者,我们当然不能错过这个绝佳的学习契机. ...
- 【开源类库学习】MBProgressHUD(提示框)
新博客: http://www.liuchendi.com MBProgressHUD是一个开源类库,实现了各种样式的提示框, 下载地址:https://github.com/jdg/MBProgre ...
- 【java】递归统计本地磁盘所有文件,提取重复文件,JDK8 map迭代
package com.sxd.createDao; import java.io.File; import java.time.LocalDateTime; import java.util.Has ...