SpringBoot系列二:SpringBoot配置文件
SpringBoot给我们提供了一个免配置的环境,但是有些时候,需要修改一些配置去满足需求,所以要了解配置,然后更好的去运行、去修改。
SpringBoot在创建项目的时候,给我们创建了一个全局的配置文件:application.properties或者application.yml,yml配置文件更加简洁一点,有层次感,不过根据个人喜欢,比较钟爱application.properties配置,IDEA还会提供提示。
在启动spring boot web项目的时候,会提供一个默认端口,个人根据需求可进行修改,默认访问路径都是‘/’,也可根据需求修改访问路径。接下来就通过例子来说明(还是建立在SpringBoot系列一中的案例来,不懂得可以去看一):
一:常规配置
1.修改application.properties配置文件
server.port=8889
server.servlet.context-path=/springBoot
或者application.yml文件
server:
port: 8889
servlet:
context-path: /springBoot
2,重新运行项目
运行项目,要是报以上错误,说明当前配置得端口号被占用了,可以重新换一个端口号
二:自定义配置属性
1.在application.properties配置文件中新增一些自定义得配置,本文是以用户的年龄和姓名属性举例子:
auth.name = xiaoming
auth.age = 24
2.在读取文件信息的地方使用@Value,引用配置文件信息。
@RestController
public class IndexController {
@Value("${auth.name}")
private String userName;
@Value("${auth.age}")
private Integer age;
@RequestMapping("/")
public String firstTest(){
return "Hello Spring Boot ! \n" +
"user name = "+userName+", age = "+age;
}
}
3、重新运行项目,显示结果如下
三:类型安全的配置
在自定义配置的基础上,我们使用@Value一个一个的注入属性值,有时候会配置多个,会显得很麻烦,可以使用@ConfigurationProperties将配置信息和一个bean及其属性关联,从而实现类型安全的配置。
1.还是使用上面的application.properties 中的auth配置信息,创建一个bean
@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "auth")
public class AuthDo {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
在本文中因为直接使用的是application.properties中的配置信息,@PropertySource指定文件地址可以不写,因为默认地址就是指向application.properties的,要是使用其他的配置文件,就可以使用该属性指定文件位置。@ConfigurationProperties指定位置只在低版本中可以,高版本中去掉了location等属性。其中prefix指定配置文件中key值。
2.踩坑,在第一次引用的是报错的,说找不到配置文件。
根据官网的提示需要引用spring-boot-configuration-processor.
jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
以上问题已解决!
3.检验代码
@RestController
public class ConfigController {
@Resource
private AuthDo authDo;
@RequestMapping("/getUser")
public String getUserMessage(){
return "the auth message is : name = "+authDo.getName()+" ,age="+authDo.getAge();
}
}
4.运行查看结果:
四、多环境配置
在实际的开发中,我们会配置不同的环境,比如测试环境(test)、线上环境(prod)、开发环境(dev),springBoot提供了针对不同的环境的配置的支持,全局profile使用application-{profile}.properties,如application-dev.properties.
通过在application.properties配置文件中设置spring.profiles.active=dev来指定当前环境。通过看以下操作。
1.各个环境的配置如下,通过端口号来体验。
application-dev.properties
server.port=2222
application-prod.properties
server.port=2223
application-test.properties
server.port=2224
2.在application.properties中配置信息,指定开发环境:spring.profiles.active=dev,运行项目
通过端口号2222可以访问,其他的端口号不行。
还没有评论,来说两句吧...