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可以访问,其他的端口号不行。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值