SpringBoot项目属性配置

application.properties

为项目配置端口和context-path:

  1. server.port=8081
  2. server.servlet.context-path=/luckymoney
  3. 访问:http://localhost:8081/luckymoney/hello
application.yml

还有另外一种方式,可以作为项目的配置文件:application.yml
yml格式简洁、清晰
删除application.properites,创建application.yml,写法如下:

server:
  port: 8081
  servlet:
    context-path: /luckymoney

注意,冒号后面要加一个空格,子属性与父属性之间空两格。

自定义属性配置,并在项目中使用@Value读取配置

在application.yml中设置minMoney=1

server:
  port: 8081
  servlet:
    context-path: /luckymoney

minMoney: 1

在HelloController中使用用@Value注解,获取配置

package com.liujx.luckymoney;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

@RestController
public class HelloController {

    @Value("${minMoney}")
    private BigDecimal minMoney;

    @GetMapping("/hello")
    public String say() {
        return "minMoney:" + minMoney;
    }

}
在其他配置中引用minMoney

现在,需要为最小金额加上说明:最少要发1元,然后在say()方法中输出。

可以模仿minMoney,在application.yml中添加description,在HelloController中加上@Value注解。

但是,如果最小金额改了呢?
假如最小要发2元,minMoney和description都需要改,我们可以分别去改,但最好的方式是把description中引用minMoney

server:
  port: 8081
  servlet:
    context-path: /luckymoney

minMoney: 2
description: 最少要发${minMoney}
@RestController
public class HelloController {

    @Value("${minMoney}")
    private BigDecimal minMoney;

    @Value("${description}")
    private String description;

    @GetMapping("/hello")
    public String say() {
        return "minMoney:" + minMoney + " description:" + description;
    }

}
将配置信息加上前缀,在类中使用@Component与@ConfigurationProperties配合读取配置信息

如果,此时又要加上最大金额限制,就又要写@Value,如果有很多个配置,就更麻烦
其实可以加上前缀,limit,把所有的属性封装成一个类:

server:
  port: 8081
  servlet:
    context-path: /luckymoney

limit:
  minMoney: 2
  maxMoney: 9999
  description: 最少要发${minMoney}, 最多${limit.maxMoney}

创建一个类,LimitConfig,将配置中的属性对应起来,添加@Component和@ConfigurationProperties(Prefix = “limit”)两个注解

package com.liujx.luckymoney;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;

@Component
@ConfigurationProperties(prefix = "limit")
public class LimitConfig {

    private BigDecimal minMoney;

    private BigDecimal maxMoney;

    private String description;

    public BigDecimal getMinMoney() {
        return minMoney;
    }

    public void setMinMoney(BigDecimal minMoney) {
        this.minMoney = minMoney;
    }

    public BigDecimal getMaxMoney() {
        return maxMoney;
    }

    public void setMaxMoney(BigDecimal maxMoney) {
        this.maxMoney = maxMoney;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

在HelloController中,使用limitConfig

package com.liujx.luckymoney;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

@RestController
public class HelloController {

    @Autowired
    private LimitConfig limitConfig;

    @GetMapping("/hello")
    public String say() {
        return "说明:" + limitConfig.getDescription();
    }

}
application多环境配置

在开发环境和生产环境很多配置是不同的。比如数据库配置往往就是两个不同的库。如果每次发布都要修改application文件是很不方便的。
其实可以划分出开发和生产两套配置:

  • application-dev.yml
  • application-prod.yml

开发的时候,希望是dev配置,因此在主配置文application.property中设置:

spring:
  profiles:
    active: dev

开发完,上了生产,可以将配置改成prod。

其实,不改代码也可以切换环境,在dev环境下,使用mvn打包,并使用java -jar启动,启动时,加上Dspring.profiles.active=prod,具体代码:

mvn clean package
java -jar -Dspring.profiles.active=prod XXX.jar
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值