Jon*_*Gao 10 java spring spring-boot
当使用spring注释@Bean来声明某些实例时,参数是注入的,并且这些是必需的,如果找不到实例,则会抛出NoSuchBeanException.
如何使它可选?就像是@Autowired(required = false)
例如
@Configuration
class SomeConfiguration {
@Bean
public SomeComponent someComponent(Depend1 depend1,
Depend2 depend2) {
SomeComponent someComponent = new SomeComponent();
someComponent.setDepend1(depend1);
if (depend2 != null) {
someComponent.setDepend2(depend2);
}
return someComponent;
}
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*mar 12
只需使用Optional:
@Bean
public SomeComponent someComponent(Depend1 depend1, Optional<Depend2> depend2) {
...
}
Run Code Online (Sandbox Code Playgroud)
您可以@Autowired(required = false)在参数上使用:
@Configuration
class SomeConfiguration {
@Bean
public SomeComponent someComponent(Depend1 depend1,
@Autowired(required = false) Depend2 depend2) {
SomeComponent someComponent = new SomeComponent();
someComponent.setDepend1(depend1);
if (depend2 != null) {
someComponent.setDepend2(depend2);
}
return someComponent;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3941 次 |
| 最近记录: |