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

Spring Autowiring类与接口?

凌波峻
2023-03-14
问题内容

我有这个春天的配置:

<bean id="boo" class="com.x.TheClass"/>

该类TheClass实现TheInterface。然后,我有以下(假设的)Java代码:

@Autowired
TheInterface x;

@Autowired
TheClass y;

自动布线TheInterface工作,但自动布线TheClass失败。春天给我NoSuchBeanDefinitionException上课了。

为什么可以连接接口而不是类?


问题答案:

通常,两者都可以使用,你可以自动装配接口或类。

你的上下文中某处可能有boo一个自动代理生成器,它将你的bean 包装在一个生成的代理对象中。此代理对象将实现TheInterface,但不是TheClass。使用自动代理时,你需要对接口进行编程,而不是对实现进行编程。

可能的候选对象是事务代理-你是在使用Spring事务,还是使用AspectJ或@Transactional



 类似资料:
  • 为什么需要接口? 我们来看一下这个代码,对于眼神不好使的人来说简直就是遭罪,当然我这里只是简单的给了几个属性,假如有20个属性呢?20个使用这种结构的函数呢? function somefunc1({ x = 0, y = 0 }: { x: number, y: number }) { // ... } function somefunc2({ x = 0, y = 0, z = 0

  • 这些语句(接口vs类型)有什么区别?

  • 问题内容: 这两个内部类声明之间有什么区别?还评论优点/缺点吗? 案例A:班级内的班级。 案例B:接口内的类。 进行了更正:放置getvalue方法。 进一步的信息:我能够在没有实现AT AT ALL接口的另一个类中实例化A和B的Items类。 由于未实例化接口,因此不通过实例化LEVELS接口就可以通过点表示法来访问接口内的所有元素,这仅仅是因为您无法实例化接口- 有效地使接口内定义的类可渗透静

  • TypeScript中的这些语句(与)之间有什么区别?

  • 11.12.1 Go 的动态类型 在经典的面向对象语言(像 C++,Java 和 C#)中数据和方法被封装为 类 的概念:类包含它们两者,并且不能剥离。 Go 没有类:数据(结构体或更一般的类型)和方法是一种松耦合的正交关系。 Go 中的接口跟 Java/C# 类似:都是必须提供一个指定方法集的实现。但是更加灵活通用:任何提供了接口方法实现代码的类型都隐式地实现了该接口,而不用显式地声明。 和其它

  • 问题内容: 对于单元测试,我需要模拟几个依赖项。依赖项之一是实现接口的类: 我需要设置一个此类的模拟对象,当提供一些指定参数时,该对象将返回一些指定值。 现在,我不确定的是,模拟接口或类是否更好 与 在测试方面有什么不同吗?首选的方法是什么? 问题答案: 在您的情况下,可能不会有太大的区别,但是首选的方法是模拟接口,就像通常情况下,如果您遵循TDD(测试驱动开发),那么即使在编写实现类之前,也可以