详解Spring Boot Profiles 配置和使用

时间:2021-05-19

介绍

Spring Profiles 提供了一套隔离应用配置的方式,不同的 profiles 提供不同组合的配置,在不同的环境中,应用在启动时通过选择激活某些特定的 profiles 来适应运行时环境,以达到在不同的环境可以使用相同的一套程序代码。

环境

  • JDK 8
  • Maven 3
  • IntelliJ IDEA 2016
  • Spring Boot 1.5.2.RELEASE
  • @Profiles

    你可以在任何 @Component(@Service,@Repository) 或 @Configuration 注解标注的类中使用 @Profiles 注解:

    public interface PaymentService { String createPaymentQrcode();}@Service@Profile("alipay")public class AlipayService implements PaymentService { @Override public String createPaymentQrcode() { return "支付宝支付二维码"; }}@Service@Profile({"default", "wechatpay"})public class WechatpayService implements PaymentService { @Override public String createPaymentQrcode() { return "微信支付二维码"; }}

    在 Spring Boot 中,默认的 profile 是 default,因此,PaymentService.createPaymentQrcode() -> 微信支付二维码。

    你可以通过 spring.profiles.active 来激活某个特定 profile:

    java -jar -Dspring.profiles.active='alipay' xxx.jar

    PaymentService.createPaymentQrcode() -> 支付宝支付二维码。

    多环境配置

    在Spring Boot 中,多环境配置文件可以使用 application-{profile}.{properties|yml} 的方式。

    @Component@ConfigurationProperties("jdbc")public class JdbcProperties { private String username; private String password; // getters and setters}

    开发环境 application-dev.properties 配置:

    jdbc.username=rootjdbc.password=123654

    生产环境 application-prod.properties 配置:

    jdbc.username=produserjdbc.password=16888888

    或:

    开发环境 application-dev.yml 配置:

    jdbc: username: root password: 123654

    生产环境 application-prod.yml 配置:

    jdbc: username: produser password: 16888888

    或:

    只使用 application.yml,并在此文件中通过 --- 分隔符创建多 profile 配置:

    app: version: 1.0.0spring: profiles: active: "dev"---spring: profiles: devjdbc: username: root password: 123654---spring: profiles: prodjdbc: username: produser password: 16888888

    命令行启动:

    java -jar -Dspring.profiles.active=prod xxxx.jar

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章