当前位置: 首页 > 面试题库 >

Spring IoC和通用接口类型

姬墨竹
2023-03-14
问题内容

我正在尝试将Spring IoC与这样的接口一起使用:

public interface ISimpleService<T> {
    void someOp(T t);
    T otherOp();
}

Spring可以基于通用类型参数T提供IoC吗?我的意思是这样的:

public class SpringIocTest {
    @Autowired
    ISimpleService<Long> longSvc;

    @Autowired
    ISimpleService<String> strSvc;
    //...
}

当然,上面的例子不起作用:

expected single matching bean but found 2: [serviceLong, serviceString]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:243)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)

我的问题:是否可以提供对接口或实现类进行最少修改的类似功能?例如,我知道我可以使用@Qualifiers,但我想使事情尽可能简单。


问题答案:

由于擦除,我认为这是不可能的。在进行全自动布线时,我们通常切换到强类型子接口:

public interface LongService extends ISimpleService<Long> {}
public interface StringService extends ISimpleService<String> {}

进行此切换后,我们发现我们实际上非常喜欢此功能,因为它使我们能够更好地进行“查找使用情况”跟踪,而使用泛型接口则有些松懈。



 类似资料:
  • 我当前的Autofac配置正在WebApi中解析我的APIController。 我正在努力的地方是,我试图创建一个具有通用构造函数参数的“BaseApiController”,但遇到了以下异常: 使用构造函数查找器“Autofac”,找不到类型为“Service”“1[WorldRegion]”的构造函数。果心激活剂。反射DefaultConstructorFinder’。 以下是代码结构: 工

  • 问题内容: 假设我想定义一个接口,该接口代表对远程服务的调用。现在,对远程服务的调用通常会返回一些信息,但也可能包含输入参数。假设一个实现类通常只实现一个服务方法。鉴于上述信息,以下是一个较差的设计(感觉不太正确): 现在,让我们用一个类执行该接口,该类使用输入参数执行远程服务: 关于上述问题,我有两个问题: 如果要提供需要不同输入参数和接口方法返回类型的子类,则使用通用接口()是否合适? 我该如

  • 考虑以下TS定义: 没什么问题,但我想知道是否有一个等效?显然,可以将泛型传递到接口中,尽管这不是我想要的,例如: 这里的示例是在React代码的上下文中,但潜在的问题是基本的TS。

  • 我有几个具体的使用以下类型的接口 具体的课程如下 现在我怎么能写工厂类,它重新运行一个通用接口,比如IActive。 谢谢

  • 为了安全地通信,连接双方必须启用 SSL。在 JSSE API,端点类的连接是SSLSocket 和 SSLEngine。在图2中,用于创建 SSLSocket 和 SSLEngine 的主要类是按逻辑顺序摆放。图下面的文字,解释了图中的内容。 Figure 2: Classes Used to Create SSLSocket and SSLEngine

  • 本文向大家介绍TypeScript 通用接口,包括了TypeScript 通用接口的使用技巧和注意事项,需要的朋友参考一下 示例 声明通用接口 具有多个类型参数的通用接口 实施通用接口 用泛型类实现它: 用非泛型类实现它: