当前位置: 首页 > 知识库问答 >
问题:

使用Micronaut的Java泛型类依赖注入

谭浩皛
2023-03-14

在Micronaut中尝试java泛型类的依赖注入

接口

public interface IRequestHandler<C, R> {
    R handler(C c);
}

依赖注入

@Singleton
public record ServiceBus(IRequestHandler<C, R> iRequestHandler) implements IServiceBus{

    @Override
    public <C, R> R send(C c) {
        return iRequestHandler.handler(c);
    }
}

接口

public interface IServiceBus {
    <C,R> R send(C c);
}

实施

public class ProductController {
    public ProductController(IServiceBus iRequestHandler){
        _iserviceBus= iRequestHandler;
    }
     public Mono<?> get(ProductSearchCriteriaCommand searchCriteria) {
            var item = _iserviceBus.<CreateProductCommand,CreateProductCommand>send(new CreateProductCommand());
            return null;
        }
}

对我来说,问题是在ServiceBus类上,我如何传递公共记录ServiceBus的类型

@Singleton
public class CreateProductCommandHandler implements IRequestHandler<CreateProductCommand, CreateProductCommand> {
    @Override
    public CreateProductCommand handler(CreateProductCommand createProductCommand) {
        return null;
    }
}

@Singleton
public record DeleteProductCommandHandler() implements IRequestHandler<DeleteProductCommand,DeleteProductCommand> {

    @Override
    public DeleteProductCommand handler(DeleteProductCommand deleteProductCommand) {
        return null;
    }
}

当我呼叫iserviceBus时。

同样,如果我调用iserviceBus。

共有1个答案

令狐经武
2023-03-14

您错误地定义了IServiceBus接口:

public interface IServiceBus {
    <C,R> R send(C c);
}

应该是:

public interface IServiceBus<C,R> {
    R send(C c);
}
 类似资料:
  • 我有基类和,它们有多个实现。但是,每个参数化类型只有一个实现,因此应该能够确定需要哪个子类。 在将第二个参数添加到基类和(从而添加到它们的所有子类)之前,这实际上是有效的。但是在添加了这些之后,下面是Spring初始化期间的错误: UnsatisfiedDependencyException:创建名为“My App”的bean时出错:通过字段“x1”表示的未满足的依赖项;嵌套异常为org.spri

  • Dependencies serve many different purposes. Some dependencies are needed to build your project, others are needed when you’re running your program. As such there are a number of different types of dep

  • 我在父POM中声明 此外,儿童pom使用 一切正常吗?但是当我在type = pom中使用这种依赖关系时 我有错误 如何在dependencyManagement中用type = POM $ { Jboss-javaee-7.0 . version }声明一个依赖项如果我在根中带有Jboss-javaee-7.0,那么运行

  • 我正在尝试用Guice注入泛型类型。我有存储库 所以当我创建光标时

  • 如何获取这个类的类型?对于上下文,我使用ModelMapper,我需要类类型T从S转换为T。 背景: 我已经尝试了N种方法,其中我放置了“//一些方法来获取类型”,但没有任何效果。例如: 或

  • 问题内容: Spring在以下方面很好地支持JUnit:使用和注释,事情看起来非常直观 该测试将能够在Eclipse&Maven中正确运行。我想知道TestNG是否有类似的东西。我正在考虑迁移到“下一代”框架,但没有找到与Spring测试匹配的对象。 问题答案: 它也可以与TestNG一起使用。