Java類中@Profile註解 springboot切換不一樣環境配置

下面2個不一樣的類實現了同一個接口,@Profile註解指定了具體環境java

// 接口定義
public interface SendMessage {

    // 發送短信方法定義
    public void send();

}

// Dev 環境實現類
@Component
@Profile("dev")
public class DevSendMessage implements SendMessage {

    @Override
    public void send() {
        System.out.println(">>>>>>>>Dev Send()<<<<<<<<");
    }

}

// Stg環境實現類
@Component
@Profile("stg")
public class StgSendMessage implements SendMessage {

    @Override
    public void send() {
        System.out.println(">>>>>>>>Stg Send()<<<<<<<<");
    }

}

// 啓動類
@SpringBootApplication
public class ProfiledemoApplication {

    @Value("${app.name}")
    private String name;

    @Autowired
    private SendMessage sendMessage;

    @PostConstruct
    public void init(){
        sendMessage.send();// 會根據profile指定的環境實例化對應的類
    }

}

在啓動程序的時候經過添加 –spring.profiles.active={profile} 來指定具體使用的配置 
例如咱們執行 java -jar demo.jar –spring.profiles.active=dev 那麼下面三個文件中的內容將被如何應用? 
Spring Boot 會先加載默認的配置文件,而後使用具體指定的profile中的配置去覆蓋默認配置。spring

application.propertiesapp

app.name=MyApp
server.port=8080
spring.profiles.active=dev

application-dev.propertieside

server.port=8081

application-stg.propertiescode

server.port=8082
相關文章
相關標籤/搜索