<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spi-annotations</artifactId>
<version>3.10.0</version>
</dependency>
public interface MailSender {
void sendMail(String to, String subject, String body);
}
public class DefaultMailSender implements MailSender {
@Override
public void sendMail(String to, String subject, String body) {
// ...
}
}
import org.apache.camel.spi.annotations.Service;
@Service(MailSender.class)
public class DefaultMailSender implements MailSender {
@Override
public void sendMail(String to, String subject, String body) {
// ...
}
}
import org.apache.camel.spi.annotations.Service;
@Service(MailSender.class, name = "advanced")
public class AdvancedMailSender implements MailSender {
@Override
public void sendMail(String to, String subject, String body) {
// ...
}
}
import org.apache.camel.spi.ServiceFactory;
import org.apache.camel.spi.annotations.Inject;
public class MailSenderLoader {
@Inject
private ServiceFactory<MailSender> mailSenderFactory;
public MailSender loadMailSender() {
return mailSenderFactory.newInstance();
}
}
public class Main {
public static void main(String[] args) {
MailSenderLoader mailSenderLoader = new MailSenderLoader();
MailSender mailSender = mailSenderLoader.loadMailSender();
mailSender.sendMail("to@example.com", "Hello", "This is a test email");
}
}