2016-03-02 81 views
3

当代码在amazon aws lambda中执行时,我的@autowired spring依赖项为null。有意义的,如果没有上下文被加载,但我认为SpringBeanAutowiringSupport将有所帮助。如何在amazon lambda中正确注入依赖关系?亚马逊aws lamba函数与弹簧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 

     } 

感谢

+0

这里是不涉及‘神奇’一个简单的方法:用Spring-只是AWS Lambda表达式(https://开头w^ww.profit4cloud.nl/blog/just-spring-enabled-aws-lambdas/) –

回答

2

在github上这个项目提供了一个模板,我“M试图做的正常工作:

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

+0

嗨!我建议看到这个框架:https://github.com/lambadaframework/lambadaframework –

+0

任何想法为什么在Handler“@Autowired”不起作用? – Kay

+0

我认为AWS lamda并不像Spring知道的servlet容器那样执行代码是有意义的,所以没有应用程序上下文,并且依赖注入也不会发生。无论如何,Lambas应该是小工作单元,所以如果你需要一个更复杂的应用程序,lambda函数应该调用运行在另一个平台上的web服务。 – bsautner