spring知识之三


条件化的Bean

假设你希望一个或多个bean只有在应用的类路径下包含特定的库时才创建。或者我们希望某个bean只有当另外某个特定的bean也声明了之后才会创建。我们还可能要求只有某个特定的环境变量设置之后,才会创建某个bean。

在Spring 4之前,很难实现这种级别的条件化配置,但是Spring 4引入了一个新的@Conditional注解,它可以用到带有@Bean注解的方法上。如果给定的条件计算结果为true,就会创建这个bean,否则的话,这个bean会被忽略。

通过ConditionContext,我们可以做到如下几点:

  • 借助getRegistry()返回的BeanDefinitionRegistry检查bean定义;

  • 借助getBeanFactory()返回的ConfigurableListableBeanFactory检查bean是否存在,甚至探查bean的属性;

  • 借助getEnvironment()返回的Environment检查环境变量是否存在以及它的值是什么;

  • 读取并探查getResourceLoader()返回的ResourceLoader所加载的资源;

  • 借助getClassLoader()返回的ClassLoader加载并检查类是否存在

猜你喜欢

转载自blog.csdn.net/xywnrf/article/details/80873699