并不是所有的Bean都会被初始化,在配置类中使用Condition来加载满足条件的Bean
时间: 2024-10-14 11:09:00 浏览: 16
在Spring框架中,并非所有注入到容器的Bean都一定会在启动时立即初始化。有些Bean可能会依赖于特定条件是否满足,这时可以利用`@Conditional`注解或者`org.springframework.context.annotation.Condition`接口以及`ConditionContext`来动态地控制Bean的创建。`@Conditional`允许你在配置类上声明一些条件判断,比如检查某个属性值、环境变量或者第三方库是否存在,如果这些条件成立,则该配置下的Bean才会被实例化。
例如:
```java
@Configuration
@Profile("production")
@Conditional(MyCustomCondition.class)
public class ProductionConfig {
// 这里的Bean只有在生产环境中并且MyCustomCondition判断为真时才会被初始化
@Bean
public ProductionService productionService() {
return new ProductionServiceImpl();
}
}
class MyCustomCondition implements Condition {
// 实现ApplicationContextAware接口并提供满足条件的方法
}
```
在这里,`ProductionConfig`中的Bean只有在应用配置为`production`模式且`MyCustomCondition`返回`true`的情况下才会被Spring容器管理并初始化。
阅读全文