amazon aws lamba函数与spring autowired依赖项

时间:2016-03-02 17:00:11

标签: java spring amazon-web-services amazon-s3 aws-lambda

当代码在amazon aws lambda中执行时,我的@autowired spring依赖项为null。如果没有加载上下文,这是有道理的,但我认为SpringBeanAutowiringSupport会有所帮助。如何在amazon lambda中正确注入依赖项?

这是我的代码,它具有空的自动装配字段,但工作正常(如果我用new替换autowired:

@Component
public class ApplicationEventHandler {

@Autowired
private Foo foo;


         public ApplicationEventHandler() {
             logger.info("I'm sure the constructor is being called");
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
             //doesn't seem to help
         }

         public void deliveryFailedPermanentlyHandler(SNSEvent event, Context context) throws IOException {
             foo.doStuff() // causes NPE

         }

提前感谢!

2 个答案:

答案 0 :(得分:3)

github上的这个项目提供了一个模板,用于我正在尝试做的工作正常:

https://github.com/cagataygurturk/aws-lambda-java-boilerplate

答案 1 :(得分:0)

AWS Lambda Best Practices notes谈论DI:

  

最大限度地降低依赖项的复杂性。更喜欢简单   在Execution Context启动时快速加载的框架。对于   例如,更喜欢更简单的Java依赖注入(IoC)框架   例如DaggerGuice,更像Spring Framework等更复杂的内容。

所以我建议您使用Dagger 2(因为Square' Dagger 1.x已被弃用)。它提供了这样的好处:

  • 轻量级框架,集成很少,Java接口/注释配置和编译时代码生成绑定;
  • 非常小的尺寸;
  • 尽早失败(编译时,不是运行时);
  • 性能 - 与手写代码一样快,并且不围绕框架编码。