小编Moh*_*vel的帖子

在控制器建议中获取控制器名称和java服务路径

大家好,我在 Spring Boot 应用程序中创建了一个全局异常处理程序,并在下面的代码中写入了 AWS cloudwatch 中发生的异常,工作正常我能够在 cloudwatch 中写入异常,但挑战是我无法获取 Restcontroller 名称和服务路径从发生特定异常的地方。

示例 Java 服务

@GetMapping(value = "DynamoDb/deleteTable")
public String deleteTable(@RequestParam String TableName) throws InterruptedException {
     Table table = dynamoDB.getTable(TableName);
        try {
            table.delete();
            table.waitForDelete();
        } catch (Exception e) {
            throw e;
        }
        return "Success";
    }
Run Code Online (Sandbox Code Playgroud)

当发生异常时,它将控制权转移到controlleradvice全局异常处理程序

这是我的代码

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cloudwatchlogs.CloudWatchLogsClient;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.InputLogEvent;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutLogEventsRequest;

import java.util.Arrays;

@ControllerAdvice
public class ExceptionControllerAdvice {
    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> exceptionHandler(Exception ex) {
        ErrorResponse …
Run Code Online (Sandbox Code Playgroud)

java spring-boot aws-java-sdk aws-cloudwatch-log-insights

5
推荐指数
1
解决办法
5761
查看次数

如何使用 @DynamoDbTable 注释动态传递 aws dynamodb 表名称

我创建了一个 java 服务来从 dynamodb 获取详细信息,它工作正常,但我的挑战是我将表名硬编码到类文件@DynamoDbTable注释中,以便在不同的环境中工作,我觉得这不是正确的方法。我在下面给出了我的代码,有人可以帮助我解决这个问题。

代码示例

public class DynamodbService {

    private DynamoDB client;
    private DynamoDBMapper objectMapper;

    /**
     * 
     * @param client
     * @param objectMapper
     */
    @Autowired
    public DynamodbService(DynamoDB client, DynamoDBMapper objectMapper) {
        this.client = client;
        this.objectMapper = objectMapper;
    }


    public List<Dynamodb> findAll() throws Exception {
        DynamoDBMapperConfig mapperConfig = new DynamoDBMapperConfig.Builder()
                .withTableNameOverride(DynamoDBMapperConfig.TableNameOverride.withTableNameReplacement(""))
                .build();
        DynamoDBMapper mapper = new DynamoDBMapper(client, mapperConfig);

        DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();

        List<Dynamodb> scanResult = objectMapper.scan(Dynamodb.class, scanExpression);
        return scanResult;
    }

}
Run Code Online (Sandbox Code Playgroud)

我的 DynamoDB 配置

@Configuration
public class …
Run Code Online (Sandbox Code Playgroud)

java amazon-dynamodb spring-boot aws-java-sdk-2.x aws-java-sdk-dynamodb

2
推荐指数
1
解决办法
7553
查看次数