软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot中多环境配置和@Profile注解示例详解

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

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

标签:SpringBoot,多环境,配置,@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

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com