私はアプリケーションに依存性注入のためにGoogle guiceを使用しています。 私はこのようなクラス構造を持っている、注射用クラスに注入
例はこれが、私がここに
package com.journaldev.di.services;
import javax.inject.Singleton;
//import com.google.inject.Singleton;
@Singleton
public class EmailService implements MessageService {
public boolean sendMessage(String msg, String receipient) {
//some fancy code to send email
System.out.println("Email Message sent to "+receipient+" with message="+msg);
return true;
}
}
を実装します
package com.journaldev.di.services;
@ImplementedBy(EmailService.class)
public interface MessageService {
boolean sendMessage(String msg, String receipient);
}
私のインタフェースであるhere
から取られます
もし私がinjec電子メールサービスはこちら。
package com.journaldev.di.consumer;
import javax.inject.Inject;
import com.journaldev.di.services.MessageService;
public class MyApplication {
private MessageService service;
@Inject
public void setService(MessageService svc){
this.service=svc;
}
public boolean sendMessage(String msg, String rec){
//some business logic here
return service.sendMessage(msg, rec);
}
}
私EmailServiceクラスはこのように見えたと仮定した場合、
package com.journaldev.di.services;
import javax.inject.Singleton;
//import com.google.inject.Singleton;
@Singleton
public class EmailService implements MessageService {
public EmailService(int someValue) {
FancyEmailService fancyEmailService = new FancyEmailService(someValue);
}
public boolean sendMessage(String msg, String receipient) {
fancyEmailService.doSomething();
System.out.println("Email Message sent to "+receipient+" with message="+msg);
return true;
}
}
上記EmailServiceコードをテストするために、私は、コンストラクタからインスタンス化するよりも、FancyEmailServiceを注入する必要があります。 FancyEmailServiceをEmailServiceコードに挿入するにはどうすればよいですか?引き続きEmailServiceをMyApplicationに挿入することができます。あなたはこれらを見てみる必要がある