該註解配合@Configuration可使用java代碼指定不一樣profile的配置,能夠註解在類上,也能夠註解在@Bean的方法上。java
@Configuration @Profile("dev") public class CacheConfigDev { private static final Logger log = LoggerFactory.getLogger(CacheConfigDev.class); @Bean public CacheManager concurrentMapCacheManager() { log.debug("Cache manager is concurrentMapCacheManager"); return new ConcurrentMapCacheManager("movieFindCache"); } }
@Configuration @Profile("prod") public class CacheConfigProd { private static final Logger log = LoggerFactory.getLogger(CacheConfigProd.class); @Bean public CacheManager cacheManager() { log.debug("Cache manager is ehCacheCacheManager"); return new EhCacheCacheManager(ehCacheCacheManager().getObject()); } @Bean public EhCacheManagerFactoryBean ehCacheCacheManager() { EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean(); cmfb.setConfigLocation(new ClassPathResource("ehcache.xml")); cmfb.setShared(true); return cmfb; } }
@Configuration public class ProfileConfig { @Bean(name="dev") @Profile("dev") DevProfile devProfile() { return new DevProfile(); } @Bean(name="prod") @Profile("prod") ProdProfile ProdProfile() { return new ProdProfile(); } }
Spring Profiles examplespring