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 }