当代码在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
}
提前感谢!
答案 0 :(得分:3)
github上的这个项目提供了一个模板,用于我正在尝试做的工作正常:
https://github.com/cagataygurturk/aws-lambda-java-boilerplate
答案 1 :(得分:0)
AWS Lambda Best Practices notes谈论DI:
最大限度地降低依赖项的复杂性。更喜欢简单 在Execution Context启动时快速加载的框架。对于 例如,更喜欢更简单的Java依赖注入(IoC)框架 例如Dagger或Guice,更像Spring Framework等更复杂的内容。
所以我建议您使用Dagger 2(因为Square' Dagger 1.x已被弃用)。它提供了这样的好处: