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


猜你喜欢
- SpeSqliteManager4Android改动日志2023.2.14 完成SQLiteOpenHelper 2023.2.23 完成r
- 一问道StringBuffer与StringBuilder的区别,张口就来StringBuffer是线程安全的,因为它相关方法都加了sync
- LocalDateTime 是 Java 8 中日期时间 API 提供的一个类,在日期和时间的表示上提供了更加丰富和灵活的支持。LocalD
- 目录 * 仓库的配置1、 下载sonatype Nexus来搭建 * 2 安装nexus服务3、创建 * 仓库4、配置 * 信息中央仓库的配置三个仓
- 混合开发简介使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flu
- 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。对于文件上传,浏览器在上
- 下拉刷新在越来越多的App中使用,已经形成一种默认的用户习惯,遇到列表显示的内容时,用户已经开始习惯性的拉拉。在交互习惯上已经形成定性。之前
- 本文实例为大家分享了DigitalClock实现商品倒计时的具体代码,供大家参考,具体内容如下自定义DigitalClock控件:packa
- Map集合的概述概述:interface Map<K,V> 其中K是键的类型,键是唯一的,不重复。V是值的类型,是可以重复。且每
- Android OnCreate()中获取控件高度与宽度试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与g
- Web.Config,其中一部分配置如下: <appSettings> <
- 一、C#代码将html样式文件转为Word文档首先有个这样的需求,将以下网页内容下载为Word文件。html代码:<div class
- Android Studio下载(下文统称AS)AS最新版下载请戳:AS下载Android SDK下载SDK安装器下载SDK安装器下载请戳:
- /* * 绘制0°到360°的正弦曲线 * 分两种情形,y>0和y<=0进行绘制 * 每种情形中要
- 前言本文主要给大家介绍了关于Android在Gradle中更改APK文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细
- MybatisPlus代码生成器含XML所需依赖 <!--Mybatis-Plu
- DateTime.Now.ToString("dddd",new System.Globalization.Cultur
- 在选择排序中,从第一个元素开始,依次遍历数组中的元素,找出当前遍历元素之后的最小元素,与当前遍历元素交换位置,依此类推,是一种由前往后的排序
- 前言:在纯 Java 代码里 我们一般都会用class.getResource(String name) 或者 class.getClass
- 1、题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知