一个项目中的多个Spring云功能可部署在AWS Lambda上

pod7payv  于 2023-01-24  发布在  Spring
关注(0)|答案(1)|浏览(122)

我目前正在使用Spring Cloud Function,我想使用AWS的适配器在AWS Lambda上部署我的函数。
到目前为止,所有实现的Spring云函数都是具有以下结构的单个函数。

@SpringBootApplication
@ComponentScan(basePackages = "com.demo")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

λ的处理程序:
导入组织架构、云、函数、适配器、aws、SpringBootRequestHandler;
公共类DemoHandler扩展了SpringBootRequestHandler〈DemoRequest,DemoResponse〉{ }
我知道这部分代码已作废。
用于定义终结点的接口:

@SuppressWarnings("hiding")
@FunctionalInterface
public interface Demoapi<DemoRequest, DemoResponse>{
    @PostMapping(value = "/v1/demo")
    public ResponseEntity<DemoResponse> demo(@RequestBody DemoRequest demoInfo);

}

后跟定义@RestController的控制器
控制器的组成部分:

@RestController
public class Democontroller implements Demoapi<DemoRequest, DemoResponse>{
        static final Logger LOGGER = LogManager.getLogger(Democontroller.class);
        
@Autowired
private DemoService demoService;

@Override
public ResponseEntity<DemoResponse> demo(@RequestBody DemoRequest demoInfo) {
    DemoResponse demoResponse=new DemoResponse();
    try {
        demoResponse = demoService.demofun(demoInfo);
  ........
.........
.........

当部署到Lambda时,我在AWS控制台中提供了com.demo.DemoHandler作为处理程序,在FUNCTION_NAME下的环境变量中,我给予了DemoController类一个小大写字母的起始字母,即demoController,当在控制台中测试以及从API网关定向时,Lambda工作正常。
目前,我正在处理一个项目,其中要求在一个 Boot 中执行所有CRUD操作,并将其部署为单个lambda。
我想知道如何在应用程序中使用类似的结构来实现这一点。
所有的帮助是高度赞赏!

5ktev3wc

5ktev3wc1#

使用此库的方法可以获得类似的结果:https://github.com/MelonProjectCom/lambda-http-router

@PathPostMapping("/example/test")
 public String example(@Body String body) {
    return "Hello World! - body: " + body;
 }

相关问题