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

作者:彭世瑜 时间:2023-11-29 05:39:04 

一、使用@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

application.yml

spring:
 profiles:
   active: production

2.2、命令行方式激活@Profile

java -jar target/demo-0.0.1-SNAPSHOT.jar  --spring.profiles.active=production

三、多Profile资源文件

配置文件

# 公共配置
application.properties

# development
application-development.properties

# production
application-production.properties

application.properties

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

application-development.properties

server.port=8081

application-production.properties

server.port=8082

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

参考
Springboot中的@Profile注解

来源:https://blog.csdn.net/mouday/article/details/128718066

标签:SpringBoot,多环境,配置,@Profile
0
投稿

猜你喜欢

  • Android简单自定义音乐波动特效图

    2022-10-09 15:45:44
  • 详解使用Spring Cloud Consul实现服务的注册和发现

    2023-06-08 03:46:23
  • java gui详解贪吃蛇小游戏实现流程

    2023-10-08 07:12:24
  • Android编程实现小说阅读器滑动效果的方法

    2021-10-26 06:44:06
  • C++实现图书馆管理系统源码

    2022-05-19 14:30:02
  • 使用vscode搭建javaweb项目的详细步骤

    2022-08-05 01:12:43
  • Java面试题冲刺第二十四天--并发编程

    2023-08-31 05:39:02
  • C#基于Socket实现简单聊天室功能

    2023-05-09 01:17:32
  • Spring boot整合log4j2过程解析

    2023-11-29 10:47:53
  • java反射使用示例分享

    2023-07-02 20:18:59
  • JAVA发送HTTP请求的多种方式详细总结

    2021-06-15 14:43:48
  • Idea jdk版本问题解决方案

    2022-04-14 11:57:41
  • Spring Security权限想要细化到按钮实现示例

    2022-10-14 20:52:38
  • Java中常用的设计模式之装饰器模式详解

    2021-08-28 07:59:15
  • Kotlin基础教程之控制流(顺序,分支,循环)

    2022-03-15 11:37:33
  • C#操作ini文件的帮助类

    2022-12-26 17:11:09
  • Spring Cloud + Nacos + Seata整合过程(分布式事务解决方案)

    2021-08-31 04:26:52
  • 详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类

    2021-08-04 03:16:28
  • JAVA实现SOCKET多客户端通信的案例

    2023-08-26 19:10:35
  • 移动端WebApp隐藏地址栏的方法

    2022-09-26 20:26:29
  • asp之家 软件编程 m.aspxhome.com