Может ли MethodInvocation MethodInterceptor передавать данные вызываемому методу? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь создать аннотацию @Transactional для MongoDb с помощью

класса перехватчика MethodInterceptor

 @Override
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {
        ClientSession session = mongoClient.startSession();
        Object result = null;
        session.startTransaction();
        try {
            result =  methodInvocation.proceed();
            session.commitTransaction();
            return result;
        }catch (Exception exception){
            commitWithRetry(methodInvocation, session);
            return result;
        }finally {
            session.close();
        }
    }

И мой класс репозитория содержит следующее method

    @MongoTransaction(retryCount = 3)
    public Invoice create(Invoice invoice) {
        invoice.setId(UUID.randomUUID().toString());
        invoiceCollection.insertOne(session, invoice);
        return invoice;
    }

invoiceCollection.insertOne(session, invoice); ожидает сеанс, который должен быть передан для работы транзакций

Я использую драйвер mongodb-driver-sync pom. xml

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>3.12.2</version>
</dependency>
...