SpringBoot(三):配置文件介绍

全局配置文件

SpringBoot使用一个全局的配置文件application.properties(application.yml),该文件放在resources目录下或者类路径下的/config下,一般我们放到resources目录下。我们可以在全局配置文件中配置任意我们需要的东西,以application.properties为例:

server.port=8081    #端口号
server.context-path=/demo   //访问路径
server.server-path=*.action 

更多的配置信息请参考官方的文档:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
我们也可以在全局的application.properties中定义自己的变量,然后通过@Value注解方便地获取到配置项的值

testValue=liudalei

这里写图片描述

自定义配置文件

为了不破坏核心文件的原生态,但又需要有自定义的配置信息存在,一般情况下会选择自定义配置文件来放这些自定义信息。
我们以一个简单的string.properties文件举例:在resources/config目录下创建配置文件string.properties,然后在SpringBoot启动类上添加@PropertySource并指定我们自定义文件的位置,如下:

@SpringBootApplication
@PropertySource(value = { "classpath:config/string.properties" }, ignoreResourceNotFound = true, encoding = "utf-8")
public class App {

    public static void main(String[] args) {

        SpringApplication.run(App.class, args);

    }
}
ignoreResourceNotFound=true表示找不到该文件,不报错。
.properties文件默认使用ISO-8859-1,所有我们这里设置的是utf-8

在controller通过@Value(“${属性名}”)注解来加载我们自定义配置文件中的属性值:
这里写图片描述

参数间引用

在application.properties中的各个参数之间也可以直接引用来使用,就像下面的设置:

com.lpl.name=liudalei
com.lpl.sex=boy
com.lpl.person=${com.lpl.name} is a ${com.lpl.sex}

当我们获取com.lpl.person属性的时候就会获取到 liudalei is a boy

使用随机数

Spring Boot的属性配置文件中可以通过${random}来产生int值、long值或者string字符串,来支持属性的随机值。他只在加载时,初始化一次,刷新浏览器不停地访问,值是不会发生变化的

#测试随机数
# 随机字符串  
com.test.random.value=${random.value}  
# 随机int  
com.test.random.number=${random.int}  
# 随机long  
com.test.random.bignumber=${random.long}  
# 10以内的随机数  
com.test.random.test10=${random.int(10)}  
# 10-20的随机数  
com.test.random.test10-20=${random.int[10,20]}

多环境开发

在我们的需求中,可能存在发短信的业务需求,如果我们在开发工程中一直进行短信的测试,无疑是一种浪费,我们只在实际的生产环境中才发送短信,在开发工程中只生产随机数就可以。那么我们就可以借助SpringBoot的注解@Profile帮助我们实现这样的需求。
用两个实现类举例子:
生产环境:

@Service
@Profile("prod")
public class UserServiceImpl implements UserService {

    @Override
    public String getUserName() {
        // TODO Auto-generated method stub
        return "生产环境";
    }

}

开发环境:

@Service
@Profile("dev")
public class UserServiceImpl1 implements UserService {

    @Override
    public String getUserName() {
        // TODO Auto-generated method stub
        return "开发环境";
    }
}

然后我们在application.properties进行如下配置,就是生产环境

spring.profiles.active=prod

当然我们也可以在不同的开发环境中使用不同的的配置文件,这样我们就避免了修改配置文件信息。比如说上传文件的时候,在本地上传地址和服务器地址的切换,我们需要建以下几个文件,分别表示不同的开发环境:
application.properties
application-dev.properties: 开发环境
application-test.properties:测试环境
application-prod.properties 生产环境
在不同的配置文件中进行不同开发环境的配置即可,我们需要用到哪个开发环境在application.properties中配置spring.profiles.active即可 ,例如我们使用的是开发环境,那么我们需在application.properties中配置:

spring.profiles.active=dev

猜你喜欢

转载自blog.csdn.net/plei_yue/article/details/79068319