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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android简单自定义音乐波动特效图
2022-10-09 15:45:44
![](https://img.aspxhome.com/file/2023/1/111701_0s.gif)
详解使用Spring Cloud Consul实现服务的注册和发现
2023-06-08 03:46:23
java gui详解贪吃蛇小游戏实现流程
2023-10-08 07:12:24
![](https://img.aspxhome.com/file/2023/0/78920_0s.png)
Android编程实现小说阅读器滑动效果的方法
2021-10-26 06:44:06
C++实现图书馆管理系统源码
2022-05-19 14:30:02
使用vscode搭建javaweb项目的详细步骤
2022-08-05 01:12:43
![](https://img.aspxhome.com/file/2023/1/119101_0s.png)
Java面试题冲刺第二十四天--并发编程
2023-08-31 05:39:02
![](https://img.aspxhome.com/file/2023/7/58447_0s.png)
C#基于Socket实现简单聊天室功能
2023-05-09 01:17:32
Spring boot整合log4j2过程解析
2023-11-29 10:47:53
![](https://img.aspxhome.com/file/2023/7/60107_0s.png)
java反射使用示例分享
2023-07-02 20:18:59
JAVA发送HTTP请求的多种方式详细总结
2021-06-15 14:43:48
Idea jdk版本问题解决方案
2022-04-14 11:57:41
![](https://img.aspxhome.com/file/2023/9/108199_0s.png)
Spring Security权限想要细化到按钮实现示例
2022-10-14 20:52:38
![](https://img.aspxhome.com/file/2023/5/106155_0s.png)
Java中常用的设计模式之装饰器模式详解
2021-08-28 07:59:15
![](https://img.aspxhome.com/file/2023/0/88180_0s.png)
Kotlin基础教程之控制流(顺序,分支,循环)
2022-03-15 11:37:33
![](https://img.aspxhome.com/file/2023/5/110755_0s.png)
C#操作ini文件的帮助类
2022-12-26 17:11:09
Spring Cloud + Nacos + Seata整合过程(分布式事务解决方案)
2021-08-31 04:26:52
![](https://img.aspxhome.com/file/2023/4/63734_0s.png)
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2021-08-04 03:16:28
![](https://img.aspxhome.com/file/2023/4/64064_0s.png)
JAVA实现SOCKET多客户端通信的案例
2023-08-26 19:10:35
![](https://img.aspxhome.com/file/2023/0/122950_0s.jpg)
移动端WebApp隐藏地址栏的方法
2022-09-26 20:26:29