Служба Grpc не находит компонентJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Служба Grpc не находит компонент

Сообщение Anonymous »

Я работаю с Spring-Boot и Java.
Я создал новую аннотацию, которая поможет мне позже внедрить ее как bean-компонент.
Пример:

Код: Выделить всё

@Retention(RetentionPolicy.RUNTIME)
public @interface ServiceApplication {

}
И в моем основном классе я загружаю следующее:

Код: Выделить всё

    @SpringBootApplication
@ComponentScan(basePackages = {"com.mypackage"}, includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {
ServiceApplication.class})})
@Import(PersonDetailsGrpc.class)
public class Application {

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

}
Я использую эту аннотацию следующим образом:

Код: Выделить всё

@ServiceApplication
@RequiredArgsConstructor
public class PersonManagementInputPort implements PersonManagementUseCase {

private final PersonManagementOutputPort managementOutputPort;

@Override
public PersonDO complementData(PersonDO personDO) {
return managementOutputPort.save(personDO);
}
}
Когда я запускаю свое приложение, все выглядит великолепно, но когда я добавляю пружину Grpc Service, она сообщает мне, что компонент не найден, это мой класс:

Код: Выделить всё

@GrpcService
@RequiredArgsConstructor
public class PersonDetailsGrpc extends PersonServiceImplBase {

private static final Logger log = LoggerFactory.getLogger(PersonDetailsGrpc.class);
private final PersonManagementUseCase useCase;
private final PersonMapper personMapper;

@Override
public void calculateAge(PersonDetailsRequest request,
StreamObserver
 responseObserver) {
log.info("request received: {}", request);
PersonDO personDO = personMapper.fromRequestToModel(request);
PersonDetailsResponse detailsResponse = personMapper.fromModelToResponse(useCase.complementData(personDO));
log.info("response generated: {}", detailsResponse);
responseObserver.onNext(detailsResponse);
responseObserver.onCompleted();
}
}
Мой интерфейс

Код: Выделить всё

public interface PersonManagementUseCase {

PersonDO complementData(PersonDO personDO);

}
Моя конфигурация сопоставления

Код: Выделить всё

@Primary
@MapperConfig(
componentModel = "spring",
unmappedSourcePolicy = ReportingPolicy.IGNORE,
unmappedTargetPolicy = ReportingPolicy.IGNORE,
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE
)
public interface MappingConfig {

}
Мой genericMapper

Код: Выделить всё

public interface GenericMapper{

M fromRequestToModel(Req request);
Res fromModelToResponse(M model);
E fromModelToEntity(M model);
M fromEntityToModel(E entity);
}
Мой personMapper

Код: Выделить всё

@Mapper(config = MappingConfig.class)
public interface PersonMapper extends GenericMapper
 {

}
Сообщение об ошибке

Код: Выделить всё

Parameter 0 of constructor in mx.com.liverpool.framework.input.grpc.PersonDetailsGrpc required a bean of type 'com.mypackage.application.usecases.PersonManagementUseCase' that could not be found.
Что не так с моей конфигурацией?
Это структура моего проекта
Изображение

Мои ServiceApplication, PersonManagementInputPort, PersonManagementUseCase находятся в модуле приложенияМое основное приложение находится в модуле начальной загрузки
Мое PersonDetailsGrpc находится в модуле фреймворка

Подробнее здесь: https://stackoverflow.com/questions/785 ... -find-bean
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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