全局配置文件
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