关于java:Spring-FrameWork从入门到NB-Environment-Abstraction

5次阅读

共计 1110 个字符,预计需要花费 3 分钟才能阅读完成。

Environment Abstraction,环境形象,指的是 Spring 通过 Environment 接口不便地从环境变量或配置文件中读取数据。

Spring 容器的 Environment 接口蕴含两个重要概念或模块:profiles 和 properties。

profiles:有 active 或 inactive 两个状态,只有 active 状态的 profiles 指定的资源才会失效、或者才会被注入到 Spring 容器中。

properties 指的是包含:

properties files, JVM system properties, system environment variables, JNDI, servlet context parameters, ad-hoc Properties objects, Map objects, and so on

等在内的资源。

profiles 和 properties 联合应用,能够实现:通过 profiles 指定在什么条件或环境下、哪一类或哪些资源文件或环境变量、参数会失效,或者哪些 bean definition 会被加载到 Spring 容器中。

比方,通过 profiles 别离指定开发环境、测试环境和生产环境的配置文件。

Bean Definition Profiles

通过 @Profile 注解实现不同环境下加载不同的 Bean,例如:

@Configuration
@Profile("development")
public class StandaloneDataConfig {

    @Bean
    public DataSource dataSource() {...}
}

@Profile 能够反对操作符:! & |, 别离代表逻辑运算符 not and or。

比方:@Profile({“p1”, “!p2”}),示意 p1 激活、或者 p2 没有被激活的状况下失效。

@Profiles 作用在 @Configuration 下示意这个配置文件下的所有 bean 都遵循其约定,作用在 @Bean、或 @Component 上则示意以后 bean 遵循其约定。

激活 Profile

Spring 反对通过以下形式激活 Profiles:

  1. 编程式:Environment 的 setActiveProfiles 办法
  2. 配置 spring.profiles.active 参数:通过零碎环境变量、JVM system properties、servlet context parameters… 等

能够通过:@Profile(“default”) 形式指定默认 Profile,Spring 没有检测到上述任何形式指定 Profiles 的状况下,缺省设置失效。

上一篇 Spring FrameWork 从入门到 NB – BeanPostProcessor

正文完
 0