您的位置:首页 > 编程语言 > Java开发

SpringBoot(三):配置文件介绍

2018-01-15 20:51 507 查看

全局配置文件

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: