【问题标题】:How to configure multiple implementation classes for an interface in Spring XML?Spring XML中如何为一个接口配置多个实现类?
【发布时间】:2015-05-02 16:38:54
【问题描述】:

我正在使用 Spring 2.0.6。在我的应用程序中,我有一个接口,并且有多个实现类。

首先我要知道,Spring中是否有一个接口可以有一个实现类的限制

如果没有,我该如何在spring Context xml中配置这些多个实现和一个接口。

以及如何使 Spring 在运行时使用名称或某些属性来使用单个实现类?

【问题讨论】:

  • 2.0.6?这是一个错字吗?该版本于 2007 年 6 月左右发布。帮自己一个忙,升级到受支持的版本,以便您可以有效地使用文档。
  • 这是一个旧应用程序,我无法控制更改技术堆栈和版本。

标签: java spring polymorphism


【解决方案1】:

首先,Spring 对实现没有限制,你可以随意实现类。

下面的示例可以帮助您了解多种实现,以及如何在运行时选择一种:

假设您有 2 个 DAO 类,一个用于 Oracle,另一个用于 MySQL,并且两个类都实现了 DAO 接口。您将实现定义为 Spring 配置文件中的 bean。在业务类中你有一个DAO类型的属性,而在spring配置文件中你选择真正的类型,无论是Oracle还是MySQL注入或使用spring注解@Autowired

这减少了耦合,并且很容易从 Oracle 迁移到 MySQL。

@Service
public class Business {
    @Autowired
    private Dao daoImpl;

    //Business methods that invoks Dao methods 
}

在 Spring 配置文件(XML 文件)中,您使用以下内容:

<bean id="daoImpl" class="app.com.MySQLDaoImpl OR app.com.OracleDaoImpl"/>

只需更改 bean 的类属性,您就可以更改整个实现,而不会更改您的业务类

这是原来的answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    相关资源
    最近更新 更多