Profile
总有那么一些时候,我们希望Spring容器能够根据我们提供的条件决定哪些Bean需要创建,哪些Bean不需要创建。提供的条件不同,Spring容器创建的Bean也不同。创建的Bean不同,软件实现的功能自然也有所差别。也就是说,我们希望在某些应用场景下无需修改代码或重新构建项目,只需简单修改一下条件就能达到改变软件功能的目的。
于是,Profile出现了。能让我们向Spring容器提供一些配置信息,告诉Spring容器两件事情:
1.告诉Spring容器我们想要创建的Bean属于哪个Profile
2.告诉Spring容器只需创建属于某些Profile的Bean,无需创建属于其它Profile的Bean
如此一来,Spring容器就能按照指定的Profile创建指定的Bean。指定的Profile不同,创建的Bean也不同。创建的Bean不同,软件实现的功能自然也就不同。非常明显,Profile就是专门用来条件化Bean的创建的。
问题在于,我们应该怎样告诉Spring容器Bean是属于哪个Profile的呢?
这就涉及@Profile注解了。@Profile注解有个value属性,能够指定Bean所属的Profile。假如com.dream包现有这样一些类:
1 public interface Music {
2 }
3
4 public class ClassicMusic implements Music {
5 }
6
7 public class CountryMusic implements Music {
8 }
9
10 public class Player {
11 private Music playingMusic = null;
12
13 public Player(Music playingMusic) {
14 this.playingMusic = playingMusic;
15 }
16 }


