SpringBoot属性配置实战(application.properties)

Spring Boot不但继承了Spring的强大功能,还实现了快速开发的便捷。如何实现快速开发,亮点主要在配置上,如果没有特殊要求完全不需要任何配置,是不是很爽。

在Spring Boot使用过程中,能直观的感受到没了原来整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml中引入模块化的Starter POMs,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties中完成一些属性配置就能开启各模块的应用。
1
使用application.properties,一般情况下主要用来配置数据库连接、日志相关配置等。除了这些配置内容之外,还有哪些其他特性和使用方法?如下: 
一般属性使用 
自定义属性使用 
属性间的引用(占位符) 
随机数的使用 
数据类型自动转换 
嵌套属性注入

一般属性使用 
应用的配置文件可以使用application.properties也可以使用application.yml 
application.properties

spring.application.name=compute-service
server.port=80
server.tomcat.uri-encoding=GBK
1
2
3
application.yml

spring:
    application:
        name: compute-service
server:
    port: 80
server:
    tomcat:
        uri-encoding: GBK
1
2
3
4
5
6
7
8
以上属性一般都会被SpringBoot框架直接使用; 
注意:使用.yml时,属性名的值和冒号中间必须有空格,如port: 80正确,port:80就是错的。

自定义属性使用 
在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,如下方式直接定义:

com.test.name=Tom
com.test.password=123456
1
2
然后通过@Value(“${属性名}”)注解来加载对应的配置属性,具体如下:

public class MyProperties{
    @Value("${com.test.name}")
    private String name;
    @Value("${com.test.password}")
    private String password;
}
1
2
3
4
5
6
属性间的引用(占位符)

app.name=MyApp
app.description=${app.name} is a Spring Boot application
server.port=${port:8080}
1
2
3
可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用); 
通过如${app.name:默认名称}方法还可以设置默认值,当找不到引用的属性时,会使用默认的属性,如当port属性不存在时会默认使用8080.

随机数的使用 
在一些情况下,有些参数我们需要希望它不是一个固定的值,比如密钥、服务端口等。Spring Boot的属性配置文件中可以通过${random}来产生int值、long值或者string字符串,来支持属性的随机值。

# 随机字符串
com.test.value=${random.value}
# 随机int
com.test.number=${random.int}
# 随机long
com.test.bignumber=${random.long}
# 10以内的随机数
com.test.test1=${random.int(10)}
# 10-20的随机数
com.test.test2=${random.int[10,20]}
1
2
3
4
5
6
7
8
9
10
random.int*支持value参数和,max参数,当提供max参数的时候,value就是最小值。

数据类型自动转换 
SpringBoot可以方便的将属性注入到一个配置对象中,并实现自动数据类型转换:

com.test.name=Isea533
com.test.port=8080
com.test.servers[0]=dev.bar.com
com.test.servers[1]=foo.bar.com
1
2
3
4
对应对象为:

@ConfigurationProperties(prefix="com.test")
public class Config {
    private String name;
    private Integer port;
    private List<String> servers = new ArrayList<String>();

    public String geName(){
        return this.name;
    }

    public Integer gePort(){
        return this.port;
    }
    public List<String> getServers() {
        return this.servers;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上面的代码会自动将prefix=”com.test” 前缀为com.test 的属性注入进来,并会自动转换类型,当使用List 的时候需要注意在配置中对List 进行初始化!

嵌套属性注入 
SpringBoot还支持嵌套属性注入:

name=Tom
jdbc.username=root
jdbc.password=root
1
2
3
对应的配置类:

@ConfigurationProperties
public class Config {
    private String name;
    private Jdbc jdbc;
    class Jdbc {
        private String username;
        private String password;
        //getter...
    }

    public Integer gePort(){
        return this.port;
    }
    public Jdbc getJdbc() {
        return this.jdbc;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
jdbc开头的属性都会注入到Jdbc对象中。
 

原文地址:https://blog.csdn.net/zlfprogram/article/details/75271070

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值