java - Spring 配置

标签 java spring

假设我们在 spring 配置中有一个 bean 定义

<bean id="scanningIMAPClient" class="com.acme.email.incoming.ScanningIMAPClient" />

我真正想要的是 scanningIMAPClient 是 com.acme.email.incoming.GenericIMAPClient 类型,如果配置的电子邮件服务器是普通 IMAP 服务器,com.acme.email.incoming.GmailIMAPClient 是 GMAIL 服务器, (因为 gmail 的行为方式略有不同)GmailIMAPClient 是 GenericIMAPClient 的子类。

我如何在 spring 配置中完成它?

有一个包含电子邮件服务器配置的属性文件。

最佳答案

Java 配置很简单:

@Value("${serverAddress}")
private String serverAddress;

@Bean
public GenericIMAPClient scanningIMAPClient() {
    if(serverAddress.equals("gmail.com"))
        return new GmailIMAPClient();
    else
        return new GenericIMAPClient();
}

您可以使用自定义 FactoryBean 模拟此行为.

关于java - Spring 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502290/

相关文章:

java - SpringMvc - java.lang.NoSuchMethodException 异常

java - react 堆项目 : ConnectableFlux auto-connecting on demand

Spring webflux,测试 `ServerResponse`

java - Spring:根据父实现选择bean实现

java - @Test 后回滚事务

java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException

java - 无缓冲的 FileInputStream 不支持 .mark(int)

java - 在 Spring Boot 中使用带有嵌套 XML 模板的 FreeMarker 模板

java - 在微服务架构中提供静态内容

java - 混合使用 Path Param 和 RequestParam 的 Rest API