gpt4 book ai didi

java - Spring bean基于属性的 Autowiring

转载 作者:行者123 更新时间:2023-12-02 13:39:47 25 4
gpt4 key购买 nike

我想在属性文件中指定哪个 bean 将被 Autowiring 。
我找到了解决方案,但它们都使用 @Profile 注释,这意味着它们基于指定的配置文件,而不是指定的属性。

我就是这样做的:

@Configuration
public class WebServiceFactory {
@Value("${webservice}")
private String webService;
@Lazy
@Autowired
private GraphQLService graphQLService;
@Lazy
@Autowired
private RestService restService;

@Primary
@Bean
WebService getWebService() {
switch (webService) {
case "graphQlService":
return graphQLService;
case "restService":
return restService;
default:
throw new UnsupportedOperationException("Not supported web service.");
}
}
}

我想要 Autowiring 的 Bean 类型是接口(interface) WebServiceGraphQLServiceRestService 是它的实现。
有没有更好的方法来做到这一点?

最佳答案

您可以使用 Spring 的常规配置来完成此操作。

class A{
B bBean;
...//setters/getters here.
}

class B{}

你可以有一个配置文件(也可以是一个配置类)

<bean id = "a" class = "A">
<property name="bBean" ref="b"/>
</bean>

<bean id = "b" class = "B">
</bean>

bBean 配置可以位于不同的文件中,因此您可以从类路径导入它。您不使用属性文件,而是使用类路径或系统文件中的配置文件。如果 B 是不同的实现,那么您可以使用正确的类修改配置文件。

关于java - Spring bean基于属性的 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794827/

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