SpringBoot中多環(huán)境配置和@Profile注解示例詳解
一、使用@Profile
1.1、@Profile修飾類
開發(fā)環(huán)境
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;
}
}正式環(huán)境
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 {
// 開發(fā)環(huán)境
@Bean("appConfigData")
@Profile("development")
public AppData getDevelopmentAppData() {
AppData appData = new AppData();
appData.setEnvironmentName("app development");
return appData;
}
// 正式環(huán)境
@Bean("appConfigData")
@Profile("production")
public AppData getProductionAppData() {
AppData appData = new AppData();
appData.setEnvironmentName("app production");
return appData;
}
}1.3、@Profile修飾注解
1、定義注解
開發(fā)環(huán)境
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 {
}正式環(huán)境
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 {
// 開發(fā)環(huán)境
@Bean("appConfigData")
@Development
public AppData getDevelopmentAppData() {
AppData appData = new AppData();
appData.setEnvironmentName("app development");
return appData;
}
// 正式環(huán)境
@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: production2.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中多環(huán)境配置和@Profile注解的文章就介紹到這了,更多相關SpringBoot 多環(huán)境配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
spring security登錄成功后通過Principal獲取名返回空問題
這篇文章主要介紹了spring security登錄成功后通過Principal獲取名返回空問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Java List Object[]轉換成List T的實例
這篇文章主要介紹了Java List Object[]轉換成List T的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

