共计 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:
- 编程式:Environment 的 setActiveProfiles 办法
- 配置 spring.profiles.active 参数:通过零碎环境变量、JVM system properties、servlet context parameters… 等
能够通过:@Profile(“default”) 形式指定默认 Profile,Spring 没有检测到上述任何形式指定 Profiles 的状况下,缺省设置失效。
上一篇 Spring FrameWork 从入门到 NB – BeanPostProcessor