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
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net