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注解
到此这篇关于SpringBoot中多环境配置和@Profile注解的文章就介绍到这了,更多相关SpringBoot 多环境配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
在Java的Hibernate框架中对数据库数据进行查询操作
这篇文章主要介绍了Java的Hibernate框架中对数据库数据进行查询操作的方法,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下2015-12-12SpringCloud引入feign失败或找不到@EnableFeignClients注解问题
这篇文章主要介绍了SpringCloud引入feign失败或找不到@EnableFeignClients注解问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03
最新评论