Spring--Environment類

一、Environment

  用來表示整個應用運行時的環境,爲了更形象地理解Environment,你可以把Spring應用的運行時簡單地想象成兩個部分:一個是Spring應用本身,一個是Spring應用所處的環境。
  Environment在容器中是一個抽象的集合,是指應用環境的2個方面:profiles和properties。

1. Profile

  profile配置是一個被命名的、bean定義的邏輯組,這些bean只有在給定的profile配置激活時纔會註冊到容器。不管是XML還是註解,Beans都有可能指派給profile配置。Environment環境對象的作用,對於profiles配置來說,它能決定當前激活的是哪個profile配置,和哪個profile是默認。

  • 一個profile就是一組Bean定義的邏輯分組。
  • 這個分組,也就 這個profile,被賦予一個命名,就是這個profile名字。
  • 只有當一個profile處於active狀態時,它對應的邏輯上組織在一起的這些Bean定義纔會被註冊到容器中。
  • Bean添加到profile可以通過XML定義方式或才annotation註解方式。
  • Environment對於profile所扮演的角色是用來指定哪些profile是當前活躍的缺省。

2. Properties

  properties屬性可能來源於properties文件、JVM properties、system環境變量、JNDI、servlet context parameters上下文參數、專門的properties對象,Maps等等。Environment對象的作用,對於properties來說,是提供給用戶方便的服務接口、方便撰寫配置、方便解析配置。

  • 配置屬性源。
  • 從屬性源中獲取屬性。
    容器(ApplicationContext)所管理的bean如果想直接使用Environment對象訪問profile狀態或者獲取屬性,可以有兩種方式
    (1)實現EnvironmentAware接口。
    (2)@Inject或者@Autowired一個Environment對象。
    絕大數情況下,bean都不需要直接訪問Environment對象,而是通過類似@Value註解的方式把屬性值注入進來。

二、具體使用

1.可以通過 @Autowired織入Environment

@Autowired
private Environment environment;

2.可以通過實現 implements EnvironmentAware 然後實現接口中的方法

@Setter
private Environment environment;

3.常用功能
獲取屬性配製文件中的值

environment.getProperty("rabbitmq.address")
獲取是否使用profile的
public boolean isDev(){
    boolean devFlag = environment.acceptsProfiles("dev");
    return  devFlag;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章