gpt4 book ai didi

java - Spring:如果可用,使用@Qualifier()-qualified bean,否则使用任何

转载 作者:行者123 更新时间:2023-11-30 06:03:24 27 4
gpt4 key购买 nike

我正在尝试创建一个组件,该组件将接受一个特定的 bean (fasterxml ObjectMapper)。

如果有一个名为 qualifiedObjectMapper 的限定 bean,我想使用那个 bean。

如果没有同名的 bean,但有 ObjectMapper bean,我想使用它。

据我所知,如果我这样做:

class MyClass(
@Qualified("qualifiedObjectMapper") objectMapper: ObjectMapper
)

它只有在存在具有该名称的 bean 时才有效,但如果没有则不会使用另一个 ObjectMapper bean(如果有多个,则使用主 bean)。

有没有办法在存在的情况下使用合格的,否则使用主要的?

最佳答案

为此,您可以使用 @Configuration 类,在该类中,您可以根据主要和可选 bean 创建另一个合格的 bean:

@Configuration
class Config {
@Primary @Bean
ObjectMapper primary() {...}

@Bean
ObjectMapper qualified(){...}

@Bean
ObjectMapper resulted(ObjectMapper primary,
@Autowired(required = false) @Qualifier("qualified") ObjectMapper qualified){
return qualified == null ? primary : qualified;
}
}

并将生成的 bean 用作:

@Service
class MyService {
MyService(@Qualifier("resulted") ObjectMapper mapper) {...}
}

关于java - Spring:如果可用,使用@Qualifier()-qualified bean,否则使用任何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com