假设我们在 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/