Micronaut4: Почему я получаю разные экземпляры @RequestScope Bean в моем фильтре против контроллера?JAVA

Программисты JAVA общаются здесь
Anonymous
Micronaut4: Почему я получаю разные экземпляры @RequestScope Bean в моем фильтре против контроллера?

Сообщение Anonymous »

Я только что обновился до Micronaut 4 и Java 21, и я пытаюсь поделиться состоянием между httpserverfilter и контроллером, использующим бобы @requestscope. Моя цель состоит в том, чтобы установить некоторую сводную информацию (например, код успеха/сбоя) в контроллере, а затем прочитать фильтр, который информация после того, как контроллер выполняет, чтобы написать окончательное резюме журнала. После некоторой отладки кажется, что меня вводили два разных экземпляра моего бока @RequestScope для одного и того же HTTP -запроса, который я не ожидал. Почему мой фильтр и контроллер получают разные экземпляры, и как я могу его исправить? Компания @RequestScope и его интерфейс
У меня есть боб запроса, который содержит специфичные для запроса данные. Он реализует общий интерфейс SummaryInfo. < /P>
// The common interface
public interface SummaryInfo {
SummaryEnum getSummaryEnum();
void setSummaryEnum(SummaryEnum summaryEnum);
Map getIdentifiers();
}

// The Request-Scoped implementation
import io.micronaut.runtime.http.scope.RequestScope;
import lombok.Data;

@Data
@RequestScope
public class RequestInfo implements SummaryInfo {
private SummaryEnum summaryEnum;
private String customerId;

@Override
public Map getIdentifiers() {
return Collections.singletonMap("customerId", customerId);
}
}
< /code>
2. Фильтр журнала
Мой фильтр - это синглтон, который непосредственно вводит суммарную бобы.
import io.micronaut.http.filter.HttpServerFilter;
import io.micronaut.http.filter.ServerFilterChain;
import jakarta.inject.Inject;
import reactor.core.publisher.Mono;

@Filter("/**")
public class SummaryLoggingFilter implements HttpServerFilter {

@Inject
private SummaryInfo summaryInfo; // Direct injection
// ... other dependencies

@Override
public Publisher

Подробнее здесь: https://stackoverflow.com/questions/797 ... -my-filter

Вернуться в «JAVA»