Google GuiceをAWS Lambdaに統合しようとしていますが、何らかの理由で注入がうまく機能しません。AWS LambdaにGoogle Guiceを統合
public class FirstLamdba implements RequestHandler<Request, Object>{
private UserService userService;
@Inject
public void seUserService(UserService userService) {
this.userService = userService;
}
public Object handleRequest(Request request, Context context){
userService.persistData();
}
UserServiceの
public interface UserService {
List<String> persistData();
}
UserServiceImpl
public class UserServiceImpl implements UserService{
@Override
public List<String> persistData() {
System.out.println("***Working*********");
}
バインディン:私は
ハンドラのコードを呼び出すようにしようとするたびにそれは私にはnullを与えますGクラス:
public class MessageGuiceModule extends AbstractModule
{
protected void configure() {
bind(UserService.class).to(UserServiceImpl.class);
}
}
テストクラス:
@Test
public void testLambdaFunctionHandler() {
Request request = new Request();
request.setName("Name");
FirstLamdba handler = new FirstLamdba();
Context ctx = createContext();
Object output = handler.handleRequest(request, ctx);
// TODO: validate output here if needed.
if (output != null) {
System.out.println(output.toString());
}
}
いくつかの理由のため、UserServiceのUserServiceのはFirstLamdbaにNULLに設定します。
おかげMark.iはちょうど試しを与え、私は、コード インジェクタインジェクタ= Guice.createInjector(新MessageGuiceModule())以下でnullポインタ例外を取得しています。 \t \t UserService userService = injector.getInstance(FirstLamdba .class); 何か不足していますか? – user1030128
実際に有効なコードのようには見えません。まず、どのラインが正確にNPEを提供していますか?次に、FirstLambda.classの代わりにUserService.classのインスタンスを取得してはいけませんか?おそらく最新の問題をはっきりと見られるように、更新されたコードで質問を編集してください。 –