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

为什么在Spring MVC中注入接口而不是类

戚阳文
2023-03-14

我正在从这个url阅读Spring Hibernate CRUD教程

http://viralpatel.net/blogs/spring3-mvc-hibernate-maven-tutorial-eclipse-example/

请任何人告诉我为什么在ContactController中。java,ContactService接口是自动连接的,而不是类ContactServiceImpl。

类似地,在ContactServiceImplContactDAO接口被注入。我们不应该注入类而不是接口吗?

共有2个答案

柯默
2023-03-14

Spring很聪明。它将找到接口的实现并适当地注入它(或其代理)

您应该针对接口而不是实现进行编程。

慕容成和
2023-03-14

当您的代码依赖于接口并且其实现由Spring注入时,您的代码将与实现解耦。这有一个优点,现在您可以在不同的实现中进行交换,而无需更改使用接口的代码。

 类似资料:
  • 问题内容: 我在这里找不到任何合理的答案,所以我希望它不会重复。那么为什么我应该更喜欢setter或构造函数注入而不是简单注入 如果您在类初始化期间需要对注入的bean进行某些操作,则可以使用构造函数注入的用法 但是仍然,它几乎和方法一样,并且我完全不会进行setter注入,这不只是Spring和其他DI框架之后的遗物吗? 问题答案: 构造函数和属性注入使您可以轻松地在非CDI环境中(例如,单元测

  • 问题内容: 我正在阅读有关如何正确执行数组深拷贝的信息,但是我对如何实现数组感到困惑。它是该类的成员,但是,如果您阅读javadocs: 首先,如果此对象的类未实现Cloneable接口,则将引发CloneNotSupportedException。 那么为什么要首先定义方法呢?当然,如果仅当存在接口时才可以使用方法,则可以将方法放在接口中。该接口本身是空的; 它只是Java用来确保使用该方法合法

  • 我正在阅读如何正确执行数组的深度复制,但是我对是如何实现的感到困惑。它是类的成员,但是如果您阅读Javadocs: 首先,如果该对象的类没有实现接口Cloneable,则抛出CloneNotSupportedException。 为什么Java要这样做?我肯定他们有正当的理由,但我似乎想不通。

  • 问题内容: 我的配置是:Wildfly 8.2.0,焊接 是否可以在bean中而不是在CDI中的接口中注入bean? 问题答案: 是的,可以,但是当EJB注入业务视图时,您要公开的唯一业务视图是该视图,该视图是实现接口(在您的情况下是本地业务接口)时的默认视图。因此,如果要注入bean本身,则需要告诉容器您正在使用无接口视图。 在您的示例中,如果仍然要实现接口并进行注入,则应使用注释,这意味着Be

  • 问题内容: 我不明白为什么很少有导入包在“ java”后面附加“ x”。是什么原因?难道就和其他人一样吗? 问题答案: Swing最初是Java的扩展-可单独下载的库。它成为Java 1.2中“主要” JRE的一部分。一个单独的库声称拥有java。*包,这很奇怪,因此是目前的情况。还有许多其他扩展都有类似的故事。 在Swing的维基百科的文章有其历史提供更多的信息。