12
假設我有一些Message
類,如下所示。 (這是爲了簡單起見,虛構的類。)Guice只注入一些構造函數
public class Message {
private String text;
public Message(String text) {
this.text = text;
}
public void send(Person recipient) {
// I think I should be Guice-injecting the sender.
MessageSender sender = new EmailBasedMessageSender();
sender.send(recipient, this.text);
}
}
由於我有不同MessageSender
實現,並且可能要進行單元測試這種發送能力,我想應當注入MessageSender
在Message
的send()
方法。但我該怎麼做?
所有吉斯的例子我見過和我的理解似乎做注射在構造函數:
public class Message {
private String text;
private MessageSender sender;
// ??? I don't know what to do here, since the `text` argument shouldn't be injected.
@Inject
public Message(String text, MessageSender sender) {
this.text = text;
this.sender = sender;
}
public void send(Person recipient) {
this.sender.send(recipient, this.text);
}
}
public class MessageSenderModule extends AbstractModule {
@Override
protected void configure() {
bind(MessageSender.class).to(EmailBasedMessageSender.class);
}
}
但我Message
類需要在text
參數的構造函數中,我不想要注入。那麼我該怎麼做呢?
(注:我是一個完整的谷歌吉斯小白我想我明白依賴注入,但我不明白如何真正與吉斯實現它)