我想在AWS lambda处理程序类中加载Spring初始上下文。这个类是我的应用程序的起点。我是以下面的方式做到的。
@SpringBootApplication
public class LambdaFunctionHandler implements RequestHandler<KinesisEvent, Object> {
@Override
public Object handleRequest(KinesisEvent input, Context context) {
AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(LambdaFunctionHandler.class);
LambdaFunctionHandler lambdaHandlerBean = appContext.getBean(LambdaFunctionHandler.class);
// some business logic call
return null;
}
}
这工作正常,但是我在appContext上收到警告,它应该关闭,因为它是资源泄漏。这可以通过调用appContext.close()来解决,但我怀疑这种在非主方法中初始化Spring应用程序上下文的方式是否正确?在main方法中最常推荐的方法如下所示
SpringApplication app = new SpringApplication(LambdaFunctionHandler.class);
ConfigurableApplicationContext context = app.run(args);
LambdaFunctionHandler lambdaFunctionHandler =
context.getBean(LambdaFunctionHandler.class);
但我没有在我的情况下替换args的价值。任何人都可以提出正确的做法
答案 0 :(得分:0)
您可以使用@SpringBootApplication和main的main方法进行简单的类 使用CommandLineRunner加载AWS lambda处理程序。只需实现run来加载bean