bean的加载控制

bean的加载控制

springboot提供了几个注解,当条件满足时才加载相应的bean

@ConditionalOnClass / @ConditionalOnMissingClass

当虚拟机中有指定类时加载bean

1
2
3
4
5
@Bean
@ConditionalOnClass(name = "com.xw.bean.Dog")
public Cat cat() {
return new Cat();
}

当虚拟机中有没有指定类时加载bean

1
2
3
4
5
@Bean
@ConditionalOnMissingClass("com.xw.bean.Dog")
public Cat cat() {
return new Cat();
}

@ConditionalOnBean / @ConditionalOnMissingBean

当加载了指定名称的bean时加载bean

1
2
3
4
5
@Bean
@ConditionalOnBean(name = "dog")
public Cat cat() {
return new Cat();
}

当没有加载了指定名称的bean时加载bean

1
2
3
4
5
@Bean
@ConditionalOnMissingBean(name = "dog")
public Cat cat() {
return new Cat();
}

还有一系列的条件控制注解

Bean默认是单例还是多例

在Spring框架中,Bean默认是单例的。也就是说,当应用程序中的多个地方都需要调用某个Bean时,Spring容器只会创建一个Bean的实例,并在需要时共享使用这个实例。

如果需要将Bean设置成多例,可以通过在Bean类上添加@Scope("prototype")注解来实现

1
2
3
4
5
@Component
@Scope("prototype")
public class DemoBean {
// ...
}

当容器需要创建这个Bean时,每次都会创建一个新的实例


bean的加载控制
http://xwww12.github.io/2022/07/24/spring/Bean的加载控制/
作者
xw
发布于
2022年7月24日
许可协议