开发者

SpringBoot中多环境配置和@Profile注解示例详解

开发者 https://www.devze.com 2023-01-19 10:47 出处:网络 作者: 彭世瑜
目录一、使用@Profile1.1、@Profile修饰类1.2、@Profile修饰方法1.3、@Profile修饰注解二、激活@Profile2.1、配置文件方式激活@Profile2.2、命令行方式激活@Profile三、多Profile资源文件一、使用@Profile
目录
  • 一、使用@Profile
    • 1.1、@Profile修饰类
    • 1.2、@Profile修饰方法
    • 1.3、@Profile修饰注解
  • 二、激活@Profile
    • 2.1、配置文件方式激活@Profile
    • 2.2、命令行方式激活@Profile
  • 三、多Profile资源文件

    一、使用@Profile

    1.1、@Profile修饰类

    开发环境

    package com.example.demo.config;
    
    import com.example.demo.entity.AppData;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    @Profile("development")
    public class DevelopmentConfig {
        @Bean
        public AppData getAppData() {
            AppData appData = new AppData();
            appData.setEnvironmentName("development");
    
            return appData;
        }
    }

    正式环境

    package com.example.demo.config;
    
    import com.example.demo.entity.AppData;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    @Profile("production")
    public class ProductionConfig {
    
        @Bean
        public AppData getAppData() {
            AppData appData = new AppData();
            appData.setEnvironmentName("production");
    
            return appData;
        }
    }

    1.2、@Profile修饰方法

    package com.example.demo.config;
    
    import com.example.demo.entity.AppData;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    public class AppConfig {
        // 开发环境
        @Bean("appConfigData")
        @Profile("development")
        public AppData getDevelopmentAppData() {
            AppData appData = new AppData();
            appData.setEnvironmentName("app development");
    
            return appData;
        }
    
        // 正式环境
        @Bean("appConfigData")
        @Profile("production")
        public AppData getProductionAppData() {
            AppData appData = new AppData();
            appData.setEnvironmentName("app production");
    
            return appData;
      编程客栈  }
    }

    1.3、@Profile修饰注解

    1、定义注解

    开发环境

    package com.example.demo.annotation;
    
    import org.springframework.context.annotation.Profile;
    
    import Java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Profile("development")
    public @interface Development {
    }

    正式环境

    package com.example.demo.annotation;
    
    import org.springframework.context.annotation.Profile;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Profile("production")
    public @interface Production {
    }

    2、使用注解

    package com.example.demo.config;
    
    import com.example.demo.annotation.Development;
    import com.example.demo.annotation.Production;
    import com.example.demo.entity.AppData;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
        // 开发环境
        @Bean("appConfigData")
        @Development
    编程客栈    public AppData getDevelopmentAppData() {
            AppData appData = new AppData();
            appData.setEnvironmentName("app development");
    
            return appData;
        }
    
        // 正式环境
        @Bean("appConfigData")
        @Production
        public AppData getProductionAppData() {
            AppData appData = new AppData();编程
            appData.setEnvironmentName("app production");
    
            return appData;
        }
    }

    二、激活@Profile

    2.1、配置文件方式激活@Profile

    application.properties

    spring.profiles.active=production 

    applicatpythonion.yml

    spring:
      profiles:
        active: production

    2.2、命令行方式激活@Profile

    java -jar target/demo-0.0.1-SNAPSHOT.jar  --spring.profiles.active=pr开发者_JS教程oduction

    三、多Profile资源文件

    配置文件

    # 公共配置
    application.properties
    
    # development
    application-development.properties
    
    # production
    application-production.properties

    application.properties

    # 激活配置文件
    spring.profiles.active=production

    application-devel编程客栈opment.properties

    server.port=8081

    application-production.properties

    server.port=8082

    完整代码 https://github.com/mouday/spring-boot-demo/tree/master/SpringBoot-Profile

    参考

    Springboot中的@Profile注解

    到此这篇关于SpringBoot中多环境配置和@Profile注解的文章就介绍到这了,更多相关SpringBoot 多环境配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号